我想解析一个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
答案 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
也许您应该只使用您的代码,但要使其成为多行并使用变量,以便您更容易阅读,并且您可以看到该过程。 希望这能帮到你!