我有一个C-ZMQ客户端,它接收两个随机端口(来自pyzmq
服务器),然后连接到它们。
通常,一切正常,但有时第二次连接失败,错误号设置为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
并且因为第二次连接的额外字节失败...
也许这是pyzmq
和zmq
之间的某种兼容性错误
我正在使用zmq ver 2.2.0
答案 0 :(得分:0)
这不是zmq中的竞争条件,也不是zmq_connect的问题。额外的0x01字节可能是错误的。如果您将其传递给zmq_connect,除EINVAL外,您期望得到什么结果?
那个额外的字节来自哪里?你是否在两个同伴之间发送的所有消息上得到它?你在这个项目中做了什么不同的事情?
由于您尚未提供源代码,因此很难提供比此更详细的建议。