VB.net 中的 IP 地址查找(XP 与 Windows 7)
Posted
技术标签:
【中文标题】VB.net 中的 IP 地址查找(XP 与 Windows 7)【英文标题】:IP Address Lookup in VB.net (XP vs Windows 7) 【发布时间】:2011-02-02 12:35:55 【问题描述】:目前我使用以下代码检索本地工作站的IP地址...
strIPAddress = System.Net.Dns.GetHostEntry(strComputerName).AddressList(0).ToString()
这适用于 Windows XP 工作站。但是,在 Vista 和 Windows 7 中,这将返回根本不使用的 IPv6 地址。 有没有一种方法可以设置它以使其始终返回 IPv4 地址而不管平台如何?
我知道我可以将 AddressList 的值增加到 1 并在 Windows 7 中获得正确的 IP。不好的部分是这需要通过识别操作系统和选择一个或另一个的动作。
必须以某种方式仅指定 IPv4。也许从网络上的 DNS 而不是工作站本身获得结果?
【问题讨论】:
【参考方案1】:您只需要遍历AddressList
查看AddressFamily
看看哪个设置为InterNetwork
Dim IP4 = New List(Of IPAddress)(Dns.GetHostEntry(strComputer).AddressList).Find(Function(f) f.AddressFamily = Sockets.AddressFamily.InterNetwork)
或者更长的路:
Dim IP4 As IPAddress
Dim AL = Dns.GetHostEntry(strComputer).AddressList
For Each A In AL
If A.AddressFamily = Sockets.AddressFamily.InterNetwork Then
IP4 = A
Exit For
End If
Next
【讨论】:
完美,看起来会起作用。还有一些类似的事情(格式化命令)我仍然无法理解。 你知道克里斯,我正要躺在你身上,看起来真的很愚蠢。当我阅读这个问题时,我正在考虑通过接口循环,比如 System.Net.NetworkInformation.NetworkInterface。对我来说幸运的是,我重新阅读了这个问题;)所有这些我都同意你的看法。几周前,当我们得到我们的第一台 W7 机器时,我刚刚经历了这个过程。许多惊喜,IPv6 地址,为什么必须有一个广播地址多播地址的 ARP 条目等。无论如何,我为你投了赞成票,因为我有邪恶的想法,你是对的。以上是关于VB.net 中的 IP 地址查找(XP 与 Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章