2016-09-26 5 views
4

Я попробовал все, чтобы получить мой адрес IPv4 ...Попытка получить мой адрес IPv4 получает VirtualBox в IPv4

Некоторые примеры:

Dim s As String = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(Function(a As IPAddress) Not a.IsIPv6LinkLocal AndAlso Not a.IsIPv6Multicast AndAlso Not a.IsIPv6SiteLocal).First().ToString() 

_

Dim myClientMachineAddressList As IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()) 
Dim myClientMachineIP As String = myClientMachineAddressList.AddressList(0).ToString() 

_

strHostName = System.Net.Dns.GetHostName() 
strIPAddress = System.Net.Dns.GetHostByName(strHostName).AddressList(0).ToString() 

_

Dim entry = Dns.GetHostEntry(System.Net.Dns.GetHostName()) 
    For Each address In entry.AddressList 
     If address.AddressFamily = AddressFamily.InterNetwork Then 
      Return address.ToString 
     End If 
    Next 

E.t.c.

... Но все выше, Give Me VirtualBox в IPv4 как:

Почему это и как я могу это исправить?

+1

Ваш компьютер имеет несколько IP-адресов, как вы уже заметили. Ваш код всегда возвращает первый (заказ не гарантируется). Так получилось, что первый из адаптеров VirtualBox. –

+0

Могу ли я что-то сделать? – BanForFun

+2

Вы можете перечислить все сетевые адаптеры на компьютере, ищем тот, который соответствует вашим критериям (имя, шлюз и т. Д.). Затем верните адреса из этого адаптера. К сожалению, у меня нет имен функций, доступных прямо сейчас. –

ответ

2

Хорошо, я не нашел способ получить ip, который я хотел, но я нашел способ получить все доступные ips с их именем сетевого адаптера. Вот код, в случае, если кто хочет:

Первый импорт System.Net.Sockets, System.Net И System.Net.NetworkInformation

Код:

Dim lst As New List(Of String) 
    For Each adapter As NetworkInterface In NetworkInterface.GetAllNetworkInterfaces 
     lst.Add(adapter.Description & ": " & adapter.GetIPProperties.UnicastAddresses(1).Address.ToString) 
    Next 

lst список всех сетевых адаптеров и их изобр

+0

Хорошая работа! Просто имейте в виду, что сетевой адаптер может иметь более одного адреса, но ваш код вернет только первый. Это может быть не для вас проблемой, если код никогда не работает на компьютере с такой настройкой. Чтобы исправить это, вы просто сделали бы внутренний цикл над 'adapter.GetIPProperties.UnicastAddresses'. –

+0

Хорошо Спасибо! .. :) – BanForFun