ZeroMQ PGM Multicast 不支持来自应用层的回复处理?

ZeroMQ PGM Multicast doesn't support reply handling from application layer?

我做了一个示例 ZeroMQ PGM 多播应用程序,它工作正常。

但是回复处理不起作用。 这种方法是否正确?
如果是 - 如何从接收方回复发送方?

发件人:

std::string msg = "hello";
socket->send(msg.c_str(),msg.length(),0);
socket->recv(reply);                          // Can we do this?

接收方:

char msg[100] = {0};
std::string reply = "Succ";
socket->recv(msg,100,0);
socket->send(reply.c_str(),reply.length(),0); // Can we do this?

是,不是!

是的,ZeroMQ pgm:// transport-class 不支持这个。

不,我们不能这样做。 .send()SUB 一侧,或 .recv()PUB 一侧。

ZeroMQ API Specification says:

The pgm and epgm transports can only be used with the ZMQ_PUB and ZMQ_SUB socket types.

ZMQ_SUB 原型不允许任何 .send() 方法。
ZMQ_PUB 原型不允许任何 .recv() 方法。

Q.E.D.


那么,如何做到这一点,从而创建一个 bi-directional signalling?

还必须添加另一个套接字,最有可能使用 tcp:// 传输 class,在其上可能会发生反馈信号。

ZeroMQ 的反向 .bind()/.connect() 机制是在非结构化、正式不受控制/配置策略未强制执行的分布式计算基础设施。