在我的项目中,我需要知道/获取连接到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地址。
预先感谢
最好的问候