我使用ZeroMQ的C接口在几台机器之间分配计算。在本地,使用tcp://localhost:5555时,一切都与预期一样。然而,当在两台机器A和B上运行客户端和服务器时,只有当服务器在A上运行而客户端在B上运行时,请求和回复才起作用。如果是相反的情况,则只在B上接收请求,而A上的客户端永远不会收到回复。
为了验证我是否正确设置了所有内容,我编译了ZeroMQ指南中的第一个example,但仍然存在相同的问题。
这种行为的原因可能是什么?
发布于 2013-01-08 05:39:01
该问题很可能是由两个不兼容的0MQ版本引起的。
这是0MQ v3.0.x、3.1.x、3.2.0、3.2.1的已知问题。这些版本都使用了一个未记录的、不兼容的协议版本(没有版本号,所以很难实现互操作),这最终在3.2.2版本中得到了修复。如果您运行的是较旧的版本,并且此版本可能已随您正在使用的语言绑定一起提供,请升级它。如果您有严重的原因无法升级,例如您在野外有使用旧版本的客户,请在zeromq-dev列表上询问,也许有人可以帮助您。值得注意的是,该协议现在有了版本号,并且向后兼容以前的稳定版本(2.2和2.1)。
https://stackoverflow.com/questions/14194289
复制相似问题