在Go中,可以使用net.Addr
接口发送UDP数据包以指定目标端点。一些特殊的地址,例如:8080
和0.0.0.0
使用本地环回接口发送数据包。收到消息后,消息的net.Addr
仍在同一主机上,显示[::1]:8080
作为源。确定数据包是由同一主机发送和接收的最简单方法是什么?
这是围棋场中的example。它显示的是0.0.0.0:8080
(ipv4),而不是[::1]:8080
。
答案 0 :(得分:0)
:8080
不是地址,而是端口号,通常在Windows上测试您自己的http网站时使用,因为在Windows上您无法轻易使用端口80(实际的http端口)。
仅当您使用localhost作为IP地址时,才会使用回送接口。
IPv4的本地主机地址为127.0.0.1
,而IPv6的本地主机地址为::1
。地址0.0.0.0
通常用作占位符地址,以指示例如侦听所有IP地址,请参见this question。
如评论中所述,您可以使用net.IP.Equal来检查您的对等方是否为本地主机。只需将您的地址与127.0.0.1
或::1
进行比较,net.IP.Equal
函数就会认为它们相等。
答案 1 :(得分:0)
我最终使用net.Dial("udp", addr)
并明显关闭了连接。 Dial还可以解析主机名,这也是我所需要的。
最好避免创建套接字,但是Dial
暂时可以使用。