我有两个应用程序,一个是基于 C 的,一个是基于 NodeJs 的。 两个应用程序需要处理来自一台 Centos 机器中同一端口的 UDP 消息。 是否可以让 2 个程序绑定(bind)到同一个 UDP 端口并同时接收消息?
在 NodeJs 中,我使用了 dgram:
dgram.createSocket({type: "udp4", reuseAddr: true})
而在 C 中,我使用 SO_REUSEADDR
、SO_REUSEPORT
参数来设置套接字。
问题是:我无法在稍后启动的应用程序中接收到任何 UDP 消息。这意味着只有一个应用程序可以接收 UDP 消息。 非常感谢任何帮助。谢谢
最佳答案
在 UDP 套接字上使用 SO_REUSEADDR
或 SO_REUSEPORT
仅适用于传入的多播或广播数据包。
如果一个单播数据包进来,它是传送到所有套接字还是只传送到一个(以及哪个)是实现定义的。
关于c - 多进程如何绑定(bind)到一个udp端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440671/