В моем проекте мне нужно знать / получить IP-адрес адаптера Ethernet, который подключен к Интернету.
Я использую следующий код, он работает, если у компьютера есть только один адаптер Ethernet, но если у него есть несколько, что он не выбирает правильный; (
Код VB.net:
Public Function LocalIP() As String
For Each objIP As System.Net.IPAddress In System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList
If objIP.AddressFamily.ToString() = "InterNetwork" Then
Return objIP.ToString()
End If
Next objIP
Return String.Empty
End Function
Вот мой результат IP-конфигурации, я обрезал всю ненужную информацию.
Windows IP Configuration
.............
Ethernet adapter Local Area Connection:
Description . . . . . . . . . . . : Realtek PCIe GBE Family Controller
IPv4 Address. . . . . . . . . . . : 192.168.1.100(Preferred) (this one should be returned)
Default Gateway . . . . . . . . . : 192.168.1.1
Ethernet adapter VirtualBox Host-Only Network:
Description . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
IPv4 Address. . . . . . . . . . . : 192.168.56.1(Preferred) (instead code retun this one)
Default Gateway . . . . . . . . . :
Tunnel adapter isatap.{716E9889-A653-4FDD-951B-4A7B44CA74EF}:
.............
Tunnel adapter isatap.{F5F56AF6-F869-4E9D-9604-7AE6894470A2}:
.............
Tunnel adapter Teredo Tunneling Pseudo-Interface:
.............
Итак, мой вопрос, как я могу получить правильный, используя этот код, или есть лилучший код.
Моя главная цель - на компьютере работает wamp-сервер, и мне нужно показать пользователю на моем vb.net winform правильный IP-адрес для пользователя, чтобы другое устройство (в основном мобильное)в той же сети можно подключиться к локальному / локальному серверу с использованием этого IP-адреса.
Так, например, если пользователь подключается с помощью Wi-Fi (ноутбук), мобильного Wi-Fi (точка доступа), мобильного (USB-подключение) или маршрутизатора на локальном порту.Во всем senario он должен вернуть правильный адрес ipv4.
Заранее спасибо
С наилучшими пожеланиями