我使用 ZeroMQ 的 C 接口(interface)在多台机器之间分配计算。在本地,tcp://localhost:5555
一切正常。但是,当客户端和服务器分别运行在两台机器 A 和 B 上时,只有当服务器运行在 A 上、客户端运行在 B 上时,请求和回复才有效。如果相反,则只有 B 上收到请求,而 B 上运行客户端。 A 上的客户端从未收到回复。
为了验证我是否正确设置了所有内容,我编译了第一个 example来自 ZeroMQ 指南,但存在同样的问题。
造成这种行为的原因是什么?
最佳答案
该问题很可能是由两个不兼容的 0MQ 版本引起的。
这是 0MQ v3.0.x、3.1.x、3.2.0、3.2.1 的已知问题。这些版本都使用了未记录的、不兼容的协议(protocol)版本(没有版本号,因此很难互操作),最终在 3.2.2 稳定版中修复。如果您运行的是旧版本,并且这可能与您正在使用的语言绑定(bind)一起提供,请升级它。如果有严重原因导致您无法升级,例如如果您有正在使用旧版本的客户,请在 Zeromq-dev 列表上询问,有人可能会提供帮助。无论如何,该协议(protocol)现在有版本号,并且向后兼容以前的稳定版本(2.2 和 2.1)。
关于c - ZeroMQ 请求/回复不向一个方向回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194289/