Я хотел бы найти способ получить назначенные адреса 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-адрес и т. д.