2

我使用 ZeroMQ 的 C 接口在多台机器之间分配计算。在本地,一切都按预期工作tcp://localhost:5555。但是,当在两台机器 A 和 B 上运行客户端和服务器时,请求和回复仅在服务器在 A 上运行并且客户端在 B 上运行时才有效。如果反过来,则只有在 B 上接收到请求,并且A 上的客户端永远不会收到回复。

为了验证我是否正确设置了所有内容,我编译了 ZeroMQ 指南中的第一个示例,但存在同样的问题。

这种行为的原因可能是什么?

4

1 回答 1

2

该问题很可能是由 0MQ 的两个不兼容版本引起的。

这是 0MQ v3.0.x、3.1.x、3.2.0、3.2.1 的已知问题。这些版本都使用了一个未记录的、不兼容的协议版本(没有版本号,所以很难互操作),最终在 3.2.2 稳定版中得到修复。如果您运行的是旧版本,并且这可能与您使用的语言绑定一起提供,请升级它。如果有严重的原因导致您无法升级,例如您有客户在使用旧版本,请在 zeromq-dev 列表中询问,有人可能会提供帮助。值得一提的是,该协议现在具有版本号,并且向后兼容以前的稳定版本(2.2 和 2.1)。

于 2013-01-07T21:39:00.667 回答