Получить маску подсети и основной шлюз - 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}'");
        }

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


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

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

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