我已经完成了一个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?
答案 0 :(得分:1)
是的,ZeroMQ pgm://
传输类不支持此功能。
不,我们不能这样做。 .send()
方面的 SUB
或 {上的 .recv()
{1}} 方。
ZeroMQ API规范说:
PUB
和pgm
传输只能与epgm
和ZMQ_PUB
套接字类型一起使用。
ZMQ_SUB
原型不允许任何 ZMQ_SUB
方法。
.send()
原型不允许任何 ZMQ_PUB
方法。
还必须添加另一个套接字,最有可能使用 .recv()
传输类,可能会在其上发生反馈信号。
ZeroMQ的反向 tcp://
/ .bind()
机制是在非结构化,正式无法控制/配置中执行此操作的常见做法 - 政策未实施的分布式计算基础设施。