VB.NET: захват и привязка IP-адресов к интерфейсам

Я хотел бы найти способ получить назначенные адреса IPv4 и IPv6 для разных интерфейсов и определить, к какому интерфейсу они привязаны.

В настоящее время я зацикливаюсь на System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces и могу получить информацию об интерфейсе:

        For Each nic As System.Net.NetworkInformation.NetworkInterface In System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()

        myarr(count2, 0) = (String.Format("{0}", nic.Description))
        myarr(count2, 1) = (String.Format("{0}", nic.GetPhysicalAddress))
        myarr(count2, 2) = (String.Format("{0}", nic.OperationalStatus))
        myarr(count2, 3) = (String.Format("{0}", nic.Speed))

        count2 += 1


    Next

К сожалению, с помощью этого метода я не могу определить простой способ захвата назначенных IP-адресов.

Самый распространенный метод, который я могу легко найти с помощью google-foo, — это найти свой IP-адрес, выполнив что-то вроде следующего:

Dim ipAdd As IPAddress = Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.First(Function(f) f.AddressFamily = Sockets.AddressFamily.InterNetwork)

Это хорошо и модно, но я не могу определить, какой интерфейс используется, и не может определить назначенный IP-адрес, который не проходит через DNS или несколько NICS.

Возможно, я могу использовать какой-то метод гетто, выдавая команду командной строки и анализируя всю информацию из ipconfig или получая GUID и запуская реестр, но я чувствую, что должен быть более простой и эффективный метод.

Хорошим примером того, что я хочу, является возможность создания списка, такого как IPCONFIG, где он содержит информацию об интерфейсе и их назначенный IP-адрес и т. д.


person Zachet    schedule 27.05.2011    source источник


Ответы (1)


в цикле for попробуйте

Dim ip = nic.GetIPProperties().UnicastAddresses(0).Address;
person Bala R    schedule 27.05.2011