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