首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LIBUV : Linux中的SO_REUSEPORT问题

LIBUV : Linux中的SO_REUSEPORT问题
EN

Stack Overflow用户
提问于 2015-08-28 14:16:35
回答 1查看 451关注 0票数 0

我在C中有一个基于libuv的UDP服务器,我们有一个:

  • Main Thread:它接收一个UDP数据包,并将其排队到4个队列中的一个,并调用对4个工作人员之一的去队列回调。主线程是bind()到端口9930。
  • 4 Worker Thread:在回调调用时,从相应的队列中排出队列,并发送一个响应。每个线程也绑定到相同的地址。

现在,当我向UDP服务器发送请求(src_port:Adest_port:9930)时,服务器使用src_port:Bdest_port:A的UDP数据包进行响应。我希望B等于9930。

我在线浏览了一些文章,并在uv_udp_bind()中为主线程和4个工作线程设置了uv_udp_bind()标志。但是,现在udp服务器并不总是接受请求,甚至连接收回调都不会被调用。它有时是这样的,在这些情况下,流在端口B=9930中是合适的。

EN

回答 1

Stack Overflow用户

发布于 2015-08-28 16:16:56

现在,当我向UDP服务器发送请求(src_port:A和dest_port:9930)时,服务器用src_port:B和dest_port:A响应UDP数据包,我希望B等于9930。

然后,服务器必须从绑定到端口9930的套接字进行响应。例如,从接收请求的同一个套接字上进行响应。

此外,工作线程可以共享主线程打开的同一个套接字。当多个线程在同一个UDP套接字上接收时,只有一个线程获得数据报。多个线程在同一个UDP套接字上发送也是安全的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32273181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档