我已经完成了一个示例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://
传输类不支持此功能。
不,我们不能这样做。 .send()
侧上的 SUB
,或 .recv()
侧上的 PUB
。
ZMQ_SUB
原型(prototype)不允许使用任何 .send()
方法。
ZMQ_PUB
原型(prototype)不允许使用任何 .recv()
方法。
Q.E.D.
那么,该如何做才能创建bi-directional signalling呢?
一个人还必须添加另一个套接字,最有可能使用 tcp://
传输类,在其上可能发生反馈信号。
ZeroMQ的反向 .bind()
/ .connect()
机制是在非结构化,形式上不受控制的/配置策略未强制实现的分布式计算基础结构中执行此操作的常见实践。
关于c++ - ZeroMQ PGM多播不支持来自应用程序层的回复处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43757885/