c - 多进程如何绑定(bind)到一个udp端口

标签 c node.js sockets udp

我有两个应用程序,一个是基于 C 的,一个是基于 NodeJs 的。 两个应用程序需要处理来自一台 Centos 机器中同一端口的 UDP 消息。 是否可以让 2 个程序绑定(bind)到同一个 UDP 端口并同时接收消息?

在 NodeJs 中,我使用了 dgram:

dgram.createSocket({type: "udp4", reuseAddr: true})

而在 C 中,我使用 SO_REUSEADDRSO_REUSEPORT 参数来设置套接字。

问题是:我无法在稍后启动的应用程序中接收到任何 UDP 消息。这意味着只有一个应用程序可以接收 UDP 消息。 非常感谢任何帮助。谢谢

最佳答案

在 UDP 套接字上使用 SO_REUSEADDRSO_REUSEPORT 仅适用于传入的多播或广播数据包。

如果一个单播数据包进来,它是传送到所有套接字还是只传送到一个(以及哪个)是实现定义的。

关于c - 多进程如何绑定(bind)到一个udp端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440671/

相关文章:

node.js - 如何在nodejs中使用变量创建mongodb查询对象

node.js - Express 4 空 JSON 查询

c - 获取环境变量的地址

c - 如何使用 C 中的 Vala 对象/方法?

c - 在 Visual 项目中包含一个文件以便使用它

sockets - 组件中的开放式 socket 连接

python - 崩溃后重新连接到套接字

c - 二进制包中的转义字符 (0x1b/27) 不会通过 Wi-Fi 发送,并且在传输过程中会损坏消息

node.js - 使用 passport.js 推特登录重新登录用户

c# - 无法将套接字重新绑定(bind)到现有 IP/端口组合