我想设置一个拓扑,其中工作人员的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地址,它是制作请求的计算机之一,而不是填充请求的那些(这些必须连接到绑定的请求者)。
答案 0 :(得分:2)
从DEALER
发送到REP
时,您需要在邮件前加一个空框(因为REP
支持已通过ROUTER
套接字的邮件,因此它覆盖所有帧直到空帧)