我在C中有一个基于libuv
的UDP服务器,我们有一个:
bind()
到端口9930 现在,当我向UDP服务器发送请求(src_port:A
和dest_port:9930
)时,服务器会使用src_port:B
和dest_port:A
的UDP数据包进行响应。我希望B等于9930.
我在线阅读了一些文章,并在UV_UDP_REUSEADDR
中为主线程和4工作线程设置了uv_udp_bind()
标志。但是,现在udp服务器并不总是接受请求,甚至不会调用接收回调。它确实有时并且对于这些情况,流程适用于端口B=9930
。
答案 0 :(得分:1)
现在,当我向UDP服务器发送请求(src_port:A和dest_port:9930)时,服务器使用src_port:B和dest_port:A的UDP数据包进行响应。我希望B等于9930。
服务器必须从绑定到端口9930
的套接字响应。例如。从收到请求的同一个套接字响应。
此外,工作线程可以共享主线程打开的同一个套接字。当多个线程在同一个UDP套接字上接收时,只有其中一个获取数据报。多个线程在同一个UDP套接字上发送也是安全的。