Получить маску подсети и основной шлюз - 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}'");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д