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)的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 如何获取网页中的数据

vb.net 怎么获取客户端ip地址?

VB.Net 2010中 ./和../的含义

vb.net 第二十一节 增加和删除一个IP地址

vb.net系统在XP上的提示音

vb.net 第十九节 Ping一个IP地址 IcmpCreateFile...