我正在为行为不佳的UDP服务器编写客户端:服务器回复来自不可预测的IP地址。
使用net.Dial()
,我可以向服务器发送查询并激发预期的响应,但是由于答复来自其他IP地址,因此尝试从net.Conn
对象读取它永远不会完成。
在网上,交易看起来像:
client-ip:client-ephemeral-port -> server-ip:server-well-known-port
surprise-ip:server-well-known-port -> client-ip:client-ephemeral-port
当服务器从server-ip
而不是surprise-ip
答复时,一切都很好。
无法更改服务器行为。
我认为这意味着我将需要放弃net.Dial()
并接近底层套接字行为(希望以与操作系统无关的方式)。
我正在寻找有关如何适应服务器行为的示例,但是到目前为止,我发现的各种UDP演练似乎都依赖于5元组的“连接”行为。