VB.net Получить IP4-адрес адаптера Ethernet, который подключен к Интернету - PullRequest
0 голосов
/ 23 октября 2018

В моем проекте мне нужно знать / получить 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.

Заранее спасибо

С наилучшими пожеланиями

...