我正在尝试实现以下 UDP 协议,但我在弄清楚我应该如何处理这个问题时遇到了一些麻烦。
该协议规定我应该将特定的 UDP 数据包发送到某个服务器,之后服务器将流式传输(几个相关的 UDP 数据包)向我返回响应,也作为 UDP 数据包。我已经成功地使用以下代码发送了 UDP 数据包:
connection, error := net.DialUDP("udp", nil, endpoint)
...
if written, error := connection.Write(query.ToBytes()); error != nil {
...
} else {
log.Printf("Successfully wrote %d bytes to %s", written, connection.RemoteAddr())
}
当我使用 Wireshark 并查看线路上发生了什么时,它看起来好像发送数据包很好(这里唯一的问题是我从来没有得到服务器的回复,但这与这个问题无关)。
在这种情况下,我处理服务器回复的最佳方式是什么?我可以使用先前建立connection
的来读取服务器响应(这对我来说似乎不太可能,因为它是 UDP 无连接)还是应该使用net.ListenUDP(...)
在正确的本地地址和端口上建立服务器来读取服务器发回给我的任何内容?