【问题标题】:ZeroMQ 2nd connection fail with einvalZeroMQ 第二次连接因 einval 失败
【发布时间】:2012-11-17 00:25:04
【问题描述】:

我有一个 C-ZMQ 客户端,它接收两个随机端口(来自pyzmq 服务器)然后连接到它们。

通常,一切正常,但有时第二次连接失败,errno 设置为EINVAL。 (即使我在连接调用之间切换,第二次仍然失败)。

端口号很好,看起来像是 ZeroMQ 中的某种竞争条件。

有人知道我该如何解决这个问题吗?

[编辑]:

服务器以这种结构“port1:port2”发送端口,例如“1234:1235” 服务器上数据包的 hexdump 是31 32 33 34 3a 31 32 33 35 在客户端是31 32 33 34 3a 31 32 33 35 01

因为额外的字节第二次连接失败...

也许这是pyzmqzmq之间的某种兼容性错误 我正在使用 zmq 2.2.0 版

【问题讨论】:

  • 什么是套接字类型?你能发布失败的代码吗?
  • @mechmind 我正在使用 connect(tcp://127.0.0.1:received_port1), connect(tcp://127.0.0.1:received_port2) 打开一个 REQ 套接字和一个 PAIR 套接字
  • 失败的套接字是第二个,不管是哪种。

标签: python c zeromq pyzmq


【解决方案1】:

这不是 zmq 中的竞争条件,也不是 zmq_connect 的问题。那个额外的 0x01 字节可能是有问题的。如果你将它传递给 zmq_connect,除了 EINVAL,你期望什么结果?

那么额外的字节是从哪里来的呢?您是否在两个对等方之间发送的所有消息中都得到它?你在这个项目中有什么不同?

由于您没有提供源代码,因此很难提供比这更详细的建议。

【讨论】:

  • 我只在这条消息中得到了字节,并非总是如此。有时出现有时不出现。
猜你喜欢
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2013-12-17
  • 2020-10-02
  • 2011-03-22
  • 1970-01-01
  • 2015-09-01
相关资源
最近更新 更多