我想对标记为1 ... n的几个客户端使用zeromq来从服务器中的一个相同套接字中提取接收,将包含一个字段的消息作为客户端ID。当服务器推送消息标记为1时,只有客户端1接收它。
一种方法是为客户端逐个连接生成相同数量的服务器套接字,我认为可能有更好的解决方案。非常感谢。
答案 0 :(得分:1)
使用"发布/订阅"模式和设置套接字选项,用于过滤消息。
SUB方面的代码:
context = zmq.Context()
socket = context.socket(zmq.SUB);
socket.connect ("tcp://localhost:%s" % port)
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
string = socket.recv()
PUB代码:
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:%s" % port)
topic = 10001
messagedata = random.randrange(1,215) - 80
socket.send("%d %d" % (topic, messagedata))
示例和模式描述here
<强>更新强>
python here
的示例