0

我有一个 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

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

也许这是我使用 zmq ver 2.2.0之间pyzmq的某种兼容性错误zmq

4

1 回答 1

0

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

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

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

于 2012-11-21T05:52:55.337 回答