对于我正在开发的一个程序,我必须判断一个IP(将我连接到Internet的IP)是公共的还是私有的.为此,我需要区分IP是IPv4还是IPv6.
我想根据IP的长度进行判断:
conn, err := net.Dial("udp", "8.9.10.11:2342")
if err != nil {
fmt.Println("Error", err)
}
localaddr := conn.LocalAddr()
addr, _ := net.ResolveUDPAddr("udp", localaddr.String())
ip := addr.IP
fmt.Println(ip)
fmt.Println(len(ip))
嗯,我的IP是192.168.2.100,也就是IPv4,但是len(Ip)告诉我长度是16,即IPv6. 我的错误是什么?是否有其他方法可以区分IPv4和IPv6,它们始终有效?