VB.net获取连接到Internet的以太网适配器的IP4地址

时间:2018-10-23 13:21:29

标签: windows vb.net networking ipv4

在我的项目中,我需要知道/获取连接到Internet的以太网适配器的ip4地址。

我正在使用以下代码,如果计算机只有一个以太网适配器,则可以工作,但是如果有多个以太网适配器,它将不能选择正确的适配器;(

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中向用户显示winforms给用户正确的ip4地址,以便同一网络上的其他设备(主要是移动设备)可以连接到使用该IP的WAMP /本地服务器。

例如,如果用户使用lan端口上的wifi(笔记本电脑),移动wifi(热点),移动设备(usb tehering)或路由器进行连接。在所有senario中,它都应返回正确的ipv4地址。

预先感谢

最好的问候

0 个答案:

没有答案