0

在 Go 中,可以使用接口发送 UDP 数据包net.Addr来指定目标端点。一些特殊地址,例如:80800.0.0.0,使用本地环回接口发送数据包。收到时,仍然在同一主机上,消息net.Addr显示[::1]:8080为来源。确定数据包是由同一主机发送和接收的最简单方法是什么?

这是 Go Playground 中的一个示例。它显示0.0.0.0:8080(ipv4) 而不是[::1]:8080.

4

2 回答 2

0

:8080不是地址,它是端口号,通常在 Windows 上测试您自己的 http 网站时使用,因为在 Windows 上您不能轻易使用端口 80,即实际的 http 端口。如果您使用 localhost 作为 IP 地址,这将只使用环回接口。

IPv4 的 localhost 地址是127.0.0.1,IPv6 的 localhost 地址是::1。该地址0.0.0.0通常用作占位符地址来表示,例如侦听所有IP地址,请参见this question

如评论中所述,您可以使用net.IP.Equal检查您的对等方是否为 localhost。只需将您的地址与127.0.0.1或 进行比较::1,该net.IP.Equal功能就会认为它们相等。

于 2018-08-24T19:49:45.483 回答
0

我最终使用net.Dial("udp", addr)并明显关闭了连接。Dial 还可以解析主机名,这也是我需要的。

避免创建套接字会很好,但Dial现在可以使用。

于 2018-08-28T13:55:04.657 回答