ZeroMQ服务器如何与所有客户端保持联系?

时间:2012-08-25 17:22:57

标签: c++ multithreading zeromq

我有以下任务:

客户端连接到1端口上的服务器(例如8080)。服务器应该记住它们,在完成计算后它应该将结果发送给客户端。在该服务器再次获得一些结果后,再次将其发送给所有客户端。等等。

服务器如何与所有客户端保持联系?

2 个答案:

答案 0 :(得分:1)

您确实需要维护客户端的所有连接吗?我认为,“发布/订阅”消息传递模型将满足所描述的条件。服务器应“发布”结果,客户端应“订阅”此更新。您可以在zguide代码示例中找到此类“服务器”的最简单示例:wuserver.cpp

答案 1 :(得分:0)

我发现一些代码使用PUB \ SUB模型并在这里使用NAT http://grokbase.com/t/zeromq/zeromq-dev/112q9934vg/nat-firewall-pub-sub-traversal

连接的发布者,而不是绑定:

import zmq
ctxt = zmq.Context()
pub = ctxt.socket(zmq.PUB)
pub.connect("tcp://127.0.0.1:2000")
while 1:
pub.send(os.urandom(5))

绑定的订阅者,而不是连接:

import zmq
ctxt = zmq.Context()
sub = ctxt.socket(zmq.SUB)
sub.bind("tcp://127.0.0.1:2000")
while 1:
sub.rcv()