0

我想解析一个 IP 地址,但没有得到想要的结果。

我想检索像这样的真实网络名称:http ://www.google.com

但我得到的是:mad01s14-in-f6.1e100.net

Public Function IP_To_HostName(ByVal IP As String) As String
    Return system.net.Dns.GetHostEntry(IP).HostName.ToString
End Function

   MsgBox(IP_To_HostName("173.194.41.6")) ' One of the Google addresses

我对网络协议和这个了解不多,我在哪里失败了?

PS:注意我不想使用过时的方法!

UPDATE:

尝试将“www.google.com”作为字符串获取,但似乎 IP 地址没有任何别名......(别名长度为 0,我不明白为什么)

 For Each a In System.Net.Dns.GetHostEntry("173.194.41.6").Aliases
        MsgBox(a) ' Is empty
 Next
4

2 回答 2

1

我用 Google 的 DNS 服务器 8.8.8.8 测试了这段代码,它返回正确的“google-public-dns-a.google.com”。

Public Function UseIPGetHost(ByRef IPAddr As String) As String
    Dim hostname As System.Net.IPHostEntry

    hostname = System.Net.Dns.GetHostEntry(IPAddr)
    Return hostname.HostName
End Function

也许您应该只使用您的代码,但使其多行并使用变量,以便您更容易阅读并且您可以看到该过程。希望这对你有帮助!

于 2013-05-11T14:57:49.370 回答
1

您的问题没有简单的解决方案。如果您向 DNS 服务器询问主机条目,它会为您提供存储在那里的名称。通常一个 IP 地址只有一条记录(反向 DNS 查找)。另一方面,指向一个 IP 地址的转发记录的数量不受限制,对于 Web 服务器,可能有数百个 Web(别名)在一个 IP 上运行。这些别名的转发记录可以(并且通常)分散在许多 DNS 服务器上。

要解决您的问题,您需要搜索 Internet 上的所有 DNS 服务器以查找哪些别名指向所需的 IP,最后选择所需的一个。

编辑

您可以尝试一些网络工具,例如http://network-tools.com/来发现关于 IP 地址的信息。如果您发现某些参数对您有用,则可以稍后从代码中发现它们。

于 2013-05-11T11:39:24.590 回答