如何确定给定的字符串是主机名还是IP地址

时间:2017-02-27 06:47:14

标签: go

_, err := strconv.ParseInt(host, 10, 64)
if err == nil {
    hp.IpAddress = host           
} else {            
    hp.HostName = dbhost 
}      

使用host = sealinuxvm11我正在

error strconv.ParseInt: parsing " sealinuxvm11 ": invalid syntax

,主机= 192.168.24.10

strrconv.ParseInt: parsing " 192.168.24.10": invalid syntax

1 个答案:

答案 0 :(得分:8)

应将IP地址解析为字符串。我使用net package的ParseIP来确定给定的字符串是IP还是主机

addr := net.ParseIP(host)
        if addr == nil {
            hp.IPAddress = host
        } else {
            hp.HostName = host
        }

这可能会设置无效值的主机名。如果net.ParseIP返回错误,请检查以确保主机名是有效的主机名。会使用

hostName, err := net.LookupHost(host)
if len(hostName) > 0{
   if hostName[0] == hp.HostName{
   }
}

确定主机名是否有效

与评论中指出的Kosik类似,肯定有更好更快的方法来确定主机名是否有效。我建议你做一些如何实现的研究