【问题标题】:Resolve IP Address to obtain Alias解析 IP 地址以获取别名
【发布时间】:2013-05-11 08:31:32
【问题描述】:

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

【问题讨论】:

  • 没有直接的方法。想想两个站点托管在同一台机器上的情况。
  • www.google.com 只是一组机器的一个别名,其中一台机器的 ip 为 173.194.44.16,你得到的是地址的真正指针,而不是别名。
  • 谢谢大家,那我需要得到的是别名,对吧?那么如何获取别名呢?

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


【解决方案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

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

【讨论】:

    【解决方案2】:

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

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

    编辑

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

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 2014-07-19
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2013-01-29
      • 2015-09-14
      相关资源
      最近更新 更多