ZMQ:如何在DEALER / REP或REQ / REP套接字中从REP端绑定

时间:2016-09-02 14:48:46

标签: zeromq pyzmq

我想设置一个拓扑,其中工作人员的IP地址未知,但只知道中央经纪人的地址。因此,我试图与经销商绑定,并与代表联系。但是代表永远不会得到我的信息:

使用Python3。

流程1:

import zmq
context = zmq.Context()
sock = context.socket(zmq.DEALER)
sock.bind("tcp://127.0.0.1:55597")

流程2:

import zmq
context = zmq.Context()
sockrep = context.socket(zmq.REP)
sockrep.connect("tcp://127.0.0.1:55597")

现在,如果我从进程1发送消息:

sock.send(b"hello")

进程2锁定:

sockrep.recv() #..............blocks forever

有什么方法可以使上述模式有效吗?我需要其他套接字类型或其他拓扑吗?我可以使用DEALER DEALER使其正常工作,但后来我有两个完全异步的套接字,这不是我想要的。重申一下,只有一个已知的IP地址,它是制作请求的计算机之一,而不是填充请求的那些(这些必须连接到绑定的请求者)。

1 个答案:

答案 0 :(得分:2)

DEALER发送到REP时,您需要在邮件前加一个空框(因为REP支持已通过ROUTER套接字的邮件,因此它覆盖所有帧直到空帧)