gpt4 book ai didi

c++ - 带有 epgm 的 ZeroMQ PUB/SUB 无法接收同一主机上进程发送的消息

转载 作者:太空狗 更新时间:2023-10-29 21:23:04 24 4
gpt4 key购买 nike

我的所有进程都有两个套接字,一个 PUB 和一个 SUB,它们都使用相同的多播地址和端口。

例如,PUB 会这样做:

bind("epgm://239.192.1.1:5555")

SUB 会这样做:

connect("epgm://239.192.1.1:5555")
setsockopt(ZMQ_SUBSCRIBE, "", 0); //subscribe everything

然后 PUB 将通过调用 zmq_send 发送消息,SUB 将通过调用 zmq_poll 接收消息并执行非阻塞 zmq_recv。

当我在两个不同的主机上运行两个进程时,它工作得很好。但是如果我在同一台主机上运行它们,发送工作但 recv 永远不会收到任何东西。

我知道发送是有效的,因为如果我让第三个进程在不同的主机上运行,​​我将收到来自前两个进程的消息,而前两个进程只接收第三个进程发送的消息。

所以我想知道这是不是因为 zeromq(或 openpgm)进行了某种过滤,所以从与接收套接字具有相同主机:端口的套接字发送的消息不会传递到接收套接字?

最佳答案

我怀疑 ZeroMQ 没有启用多播环回,或者你应该通过 ZeroMQ API 以某种方式自己做,但你没有。

关于c++ - 带有 epgm 的 ZeroMQ PUB/SUB 无法接收同一主机上进程发送的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com