Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ZeroMQ服务器如何维护与所有客户端的连接?_C++_Multithreading_Zeromq - Fatal编程技术网

C++ ZeroMQ服务器如何维护与所有客户端的连接?

C++ ZeroMQ服务器如何维护与所有客户端的连接?,c++,multithreading,zeromq,C++,Multithreading,Zeromq,我有以下任务: 客户端通过一个端口(例如8080)连接到服务器。服务器应该记住它们,并在完成计算后将结果发送给客户端。之后,服务器一次又一次地得到一些结果,并将其发送给所有客户端。等等 服务器如何维护与所有客户端的连接?您实际上需要维护来自客户端的所有连接吗?我认为,“发布/订阅”消息传递模型将满足所描述的条件。服务器应“发布”结果,客户端应“订阅”此更新。您可以在zguide代码示例中找到此类“服务器”的最简单示例:我发现一些代码使用PUB\SUB模型并与NAT一起工作: 连接而不是绑定的发布

我有以下任务:

客户端通过一个端口(例如8080)连接到服务器。服务器应该记住它们,并在完成计算后将结果发送给客户端。之后,服务器一次又一次地得到一些结果,并将其发送给所有客户端。等等


服务器如何维护与所有客户端的连接?

您实际上需要维护来自客户端的所有连接吗?我认为,“发布/订阅”消息传递模型将满足所描述的条件。服务器应“发布”结果,客户端应“订阅”此更新。您可以在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代理。