2014-07-09 133 views
0

我想从IP地址的主机名,但我总是得到如下错误:如何从IP地址获取主机名?

err couln't get hostnames,err lookup 220.220.103.65.in-addr.arpa.: no such host,ip 65.103.220.220 

代码:

var hostname string 
hostnames, err := net.LookupAddr(c.ip) 
if err != nil { 
    glog.Errorf("err couln't get hostnames,err %v,ip %v", err, c.ip) 
    } else { 
    hostname = strings.Join(hostnames, " ") 
} 

回答

7

这不是错误,但是一个简单的声明中表示,IP地址,您'寻找没有PTR记录。没有要求Internet上的每台计算机都有PTR记录,并且不保证试图从IP地址找到名称将会成功。

简而言之,您的代码不会总是返回一个名称,并且您无能为力。

无论你使用机器名称,你都不能依赖它。找到一种不同的方式。

+0

nmap实际上获取主机名例如'nmap扫描报告host81-135-23-115.range81-135.btcentralplus.com(81.135.23.115)'所以我想知道为什么不能这样做 – hey

+0

这不是你使用哪个工具或系统调用你做。这是关于全球DNS中可用的信息。有些地址会给出回应,其他则不会。这不是你的控制,也不是可预测的。不要依赖它。 –

+0

问题是,永远不会提供任何'回复'信息。到目前为止,我有2500个IP地址,所以我猜这是一个Go问题。对于同一个IP,nmap提供主机名,而Go不提供。 – hey