对于我正在处理的程序,我必须检查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))
Run Code Online (Sandbox Code Playgroud)
好吧,我的IP是192.168.2.100,所以IPv4,但len(ip)告诉我长度是16,这将是IPv6.我的错是什么?是否存在区分IPv4和IPv6的其他方法?