Получить маску подсети и основной шлюз - C#
Формулировка задачи:
Мне нужно получить IPV4 адрес, маску подсети и основной шлюз, проверить прописаны ли они статически, если нет то прописать. Как это сделать?
Решение задачи: «Получить маску подсети и основной шлюз»
textual
Листинг программы
static void Main(string[] args) { Console.WriteLine($"IPv4 addresses: {Environment.NewLine}"); foreach (var ip in Dns.GetHostAddresses(Dns.GetHostName()).Where(ha => ha.AddressFamily == AddressFamily.InterNetwork)) { Console.WriteLine($"IP: {ip}"); Console.WriteLine($"Subnet mask: {GetSubnetMask(ip)}"); var targetInterface = NetworkInterface.GetAllNetworkInterfaces().SingleOrDefault(ni => ni.GetIPProperties().UnicastAddresses.OfType<UnicastIPAddressInformation>().Any(x => x.Address.Equals(ip))); if (targetInterface == null) continue; var gates = targetInterface.GetIPProperties().GatewayAddresses; if (gates.Count == 0) { Console.WriteLine("Gates: NO GATES"); Console.WriteLine(Environment.NewLine); continue; } Console.WriteLine("Gates:"); foreach (var gateAddress in gates) { Console.WriteLine($"{gateAddress.Address:10}"); } Console.WriteLine(Environment.NewLine); } Console.ReadKey(true); } public static IPAddress GetSubnetMask(IPAddress address) { foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) { foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) { if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork) { if (address.Equals(unicastIPAddressInformation.Address)) { return unicastIPAddressInformation.IPv4Mask; } } } } throw new ArgumentException($"Can't find subnetmask for IP address '{address}'"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д