Получить маску подсети и основной шлюз - C#

Узнай цену своей работы

Формулировка задачи:

Мне нужно получить IPV4 адрес, маску подсети и основной шлюз, проверить прописаны ли они статически, если нет то прописать. Как это сделать?

Решение задачи: «Получить маску подсети и основной шлюз»

textual
Листинг программы
  1. static void Main(string[] args)
  2.         {
  3.  
  4.             Console.WriteLine($"IPv4 addresses: {Environment.NewLine}");
  5.             foreach (var ip in Dns.GetHostAddresses(Dns.GetHostName()).Where(ha => ha.AddressFamily == AddressFamily.InterNetwork))
  6.             {
  7.                 Console.WriteLine($"IP: {ip}");
  8.                 Console.WriteLine($"Subnet mask: {GetSubnetMask(ip)}");
  9.  
  10.                 var targetInterface = NetworkInterface.GetAllNetworkInterfaces().SingleOrDefault(ni => ni.GetIPProperties().UnicastAddresses.OfType<UnicastIPAddressInformation>().Any(x => x.Address.Equals(ip)));
  11.                 if (targetInterface == null)
  12.                      continue;
  13.  
  14.                 var gates = targetInterface.GetIPProperties().GatewayAddresses;
  15.                 if (gates.Count == 0)
  16.                 {
  17.                     Console.WriteLine("Gates: NO GATES");
  18.                     Console.WriteLine(Environment.NewLine);
  19.                     continue;
  20.                 }
  21.  
  22.                 Console.WriteLine("Gates:");
  23.                 foreach (var gateAddress in gates)
  24.                 {
  25.                     Console.WriteLine($"{gateAddress.Address:10}");
  26.                 }
  27.                 Console.WriteLine(Environment.NewLine);
  28.             }
  29.             Console.ReadKey(true);
  30.         }
  31.  
  32.  
  33. public static IPAddress GetSubnetMask(IPAddress address)
  34.         {
  35.             foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
  36.             {
  37.                 foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses)
  38.                 {
  39.                     if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork)
  40.                     {
  41.                         if (address.Equals(unicastIPAddressInformation.Address))
  42.                         {
  43.                             return unicastIPAddressInformation.IPv4Mask;
  44.                         }
  45.                     }
  46.                 }
  47.             }
  48.             throw new ArgumentException($"Can't find subnetmask for IP address '{address}'");
  49.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут