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