gpt4 book ai didi

network-programming - 使用 UDPConn 请求/响应对话

转载 作者:IT王子 更新时间:2023-10-29 02:18:19 25 4
gpt4 key购买 nike

我正在尝试实现以下 UDP 协议(protocol),但我在弄清楚我应该如何处理这个问题时遇到了一些麻烦。

协议(protocol)声明我应该将特定的 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(...) 在正确的本地地址和端口上建立服务器以读取服务器发回给我的任何内容?

最佳答案

该协议(protocol)的意图很明显,您只需使用同一个 UDP 套接字来接收用于发送请求的回复。如果您有客户端防火墙,则必须在发送之前显式打开 UDP 端口并将 UDP 套接字绑定(bind)到该端口。否则就让系统选择本地端口,完全不绑定(bind)。

短语“与初始数据包建立的相同端口”具有误导性。他们是你的话,还是协议(protocol)规范的?当您执行第一次发送时真正发生的是,如果您还没有绑定(bind)套接字,它会自动绑定(bind)到系统选择的端口,就像您将它绑定(bind)到端口零一样。

关于network-programming - 使用 UDPConn 请求/响应对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com