我有两个应用程序,一个是基于C的,一个是基于NodeJs的。 两个应用程序需要在一台Centos机器中处理来自同一端口的UDP消息。 是否有可能有2个程序绑定到同一个UDP端口并同时接收消息?
在NodeJs中,我使用了dgram:
dgram.createSocket({type: "udp4", reuseAddr: true})
在C中,我使用SO_REUSEADDR
,SO_REUSEPORT
参数作为设置套接字。
问题是:我在以后启动的应用程序中无法接收任何UDP消息。这意味着只有一个应用程序可以接收UDP消息。 任何帮助都非常感谢。感谢
答案 0 :(得分:2)
在UDP套接字上使用SO_REUSEADDR
或SO_REUSEPORT
仅适用于传入的多播或广播数据包。
如果有一个单播数据包,它是否被传送到所有套接字或只是一个(以及哪一个)是实现定义的。