C++ ZeroMQ服务器如何维护与所有客户端的连接?
我有以下任务: 客户端通过一个端口(例如8080)连接到服务器。服务器应该记住它们,并在完成计算后将结果发送给客户端。之后,服务器一次又一次地得到一些结果,并将其发送给所有客户端。等等C++ ZeroMQ服务器如何维护与所有客户端的连接?,c++,multithreading,zeromq,C++,Multithreading,Zeromq,我有以下任务: 客户端通过一个端口(例如8080)连接到服务器。服务器应该记住它们,并在完成计算后将结果发送给客户端。之后,服务器一次又一次地得到一些结果,并将其发送给所有客户端。等等 服务器如何维护与所有客户端的连接?您实际上需要维护来自客户端的所有连接吗?我认为,“发布/订阅”消息传递模型将满足所描述的条件。服务器应“发布”结果,客户端应“订阅”此更新。您可以在zguide代码示例中找到此类“服务器”的最简单示例:我发现一些代码使用PUB\SUB模型并与NAT一起工作: 连接而不是绑定的发布
服务器如何维护与所有客户端的连接?您实际上需要维护来自客户端的所有连接吗?我认为,“发布/订阅”消息传递模型将满足所描述的条件。服务器应“发布”结果,客户端应“订阅”此更新。您可以在zguide代码示例中找到此类“服务器”的最简单示例:我发现一些代码使用PUB\SUB模型并与NAT一起工作: 连接而不是绑定的发布服务器:
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()
我考虑了PUP\SUB模式,但我的服务器和客户端可以位于NAT后面的不同网络。我认为最可靠的解决方案是由客户端发起连接。我看不出不同网络等存在问题,使用pub/sub连接到套接字时只需设置特殊的连接类型。所以,从“健壮”的角度来看,没有变化。您能提供更多关于“特殊连接类型”的信息吗?我想我必须在有客户端的所有网络之间获得PUB\SUB代理。