Go 如何从IP地址获取主机名?
我正在尝试从Ip地址获取主机名,但我始终收到以下错误:Go 如何从IP地址获取主机名?,go,Go,我正在尝试从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,e
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, " ")
}
这不是一个错误,而是一个简单的语句,您要查找的IP地址没有PTR记录。没有要求Internet上的每台计算机都有PTR记录,也不能保证从IP地址查找名称会成功 简而言之,您的代码并不总是返回名称,对此您无能为力
不管你用机器名做什么,你都不能依赖它。找到另一种方法。nmap实际上获取主机名,例如主机81-135-23-115.range81-135.btcentralplus.com 81.135.23.115的nmap扫描报告,所以我想知道为什么go不能这样做这与您使用的工具或系统调用无关。这是关于全球DNS中可用的信息。一些地址会给出响应,其他地址不会。这不在你的控制范围之内,也不可预测。不要依赖它。问题是go从未提供任何“响应”信息。到目前为止,我有2500个IP地址,所以我想有一个围棋的问题。对于同一IP,nmap提供主机名,而Go不提供。您可以使用IP 81.135.23.115并尝试它,而不是我的话。也许nmap和Go使用不同的解析程序?