我使用ZeroMQ的C接口在多台机器之间分配计算。在本地,一切都按预期与tcp://localhost:5555
一起工作。但是,当在两台机器A和B上运行客户端和服务器时,请求和应答仅在服务器在A上运行且客户端在B上运行时才有效。如果是相反的情况,则仅在B上接收请求并且A上的客户端从未收到回复。
为了验证我是否正确设置了所有内容,我从ZeroMQ指南中编译了第一个example但是存在同样的问题。
这种行为可能是什么原因?
答案 0 :(得分:2)
问题很可能是由两个不兼容的0MQ版本引起的。
这是0MQ v3.0.x,3.1.x,3.2.0,3.2.1的已知问题。这些版本都使用了未记录的,不兼容的协议版本(没有版本号,因此非常难以实现互操作),最终在3.2.2稳定版中得到修复。如果您正在运行旧版本,并且这可能伴随您正在使用的语言绑定,请升级它。如果有严重的原因导致您无法升级,例如你有野外客户使用旧版本,在zeromq-dev列表上询问,有人可能会提供帮助。对于它的价值,该协议现在具有版本号,并且向后兼容以前的稳定版本(2.2和2.1)。