我的所有进程都有两个套接字,一个 PUB 和一个 SUB,并且它们都使用相同的多播地址和端口。
例如,PUB 会这样做:
绑定(“epgm://239.192.1.1:5555”)
SUB 将执行以下操作:
连接(“epgm://239.192.1.1:5555”)
setsockopt(ZMQ_SUBSCRIBE, "", 0); //订阅所有内容
然后PUB将通过调用zmq_send发送消息,SUB将通过调用zmq_poll接收消息并执行非阻塞zmq_recv。
当我在两个不同的主机上运行两个进程时,它工作得很好。但是,如果我在同一主机上运行它们,则发送可以工作,但接收永远不会收到任何内容。
我知道发送有效,因为如果我让第三个进程在不同的主机上运行,我将从前两个进程接收消息,而前两个进程仅接收第三个进程发送的消息。
所以我想知道这是因为 Zeromq (或 openpgm)做了某种过滤,所以从与接收套接字具有相同主机:端口的套接字发送的消息不会传递到接收套接字?
我怀疑 ZeroMQ 没有启用多播环回,或者也许您应该通过 ZeroMQ API 自己以某种方式执行此操作,但您没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)