1

我已经完成了一个示例 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?
4

1 回答 1

1

是的,不!

是的,ZeroMQpgm://传输类不支持这一点。

不,我们不能这样做。既不是.send()SUB一边,也不是.recv()PUB一边。

ZeroMQ API 规范说

和传输只能与pgm和套接字类型一起使用。epgmZMQ_PUBZMQ_SUB

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

量子点


那么,如何做到这一点,以创建双向信令

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

在此处输入图像描述

ZeroMQ 的反向.bind()/.connect()机制是在非结构化、形式上不受控制/配置策略未强制执行的分布式计算基础架构中执行此操作的常见做法。

于 2017-05-03T15:20:59.923 回答