解析IP地址以获取别名

时间:2013-05-11 08:31:32

标签: .net vb.net ip hostname system.net

我想解析一个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

2 个答案:

答案 0 :(得分:1)

您的问题没有简单的解决方案。如果您要求DNS服务器输入主机,它会为您提供存储在那里的名称。通常一个IP地址只有一条记录(Reverse DNS lookup)。另一方面,指向一个IP地址的转发记录的数量不受限制,并且在Web服务器的情况下,可以在1个IP上运行数百个web(别名)。这些别名的转发记录可以(通常是)在许多DNS服务器上进行。

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

修改

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

答案 1 :(得分: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

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