Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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
Python 与ZeroMQ异步的双向通信_Python_C++_Sockets_Client Server_Zeromq - Fatal编程技术网

Python 与ZeroMQ异步的双向通信

Python 与ZeroMQ异步的双向通信,python,c++,sockets,client-server,zeromq,Python,C++,Sockets,Client Server,Zeromq,我理解,因为我感兴趣的是让多个客户端以协作的方式相互交谈,可能有一个服务器代理或中间件。这将有助于在相关实体之间接收和转发消息 我的研究/情况案例如下: 我想通过图表中的步骤号交互来表示工作流。我希望不要给我的图表带来不便,我只是参考它来更好地说明我的情况 在两个客户端节点之间实现双向、异步消息以交换消息的合适模式是什么 因为这一切。。。我一直在阅读ZMQ_路由器和ZMQ_经销商sockets,它们似乎是一个不错的选择,因为正在进行和即将到来的路由策略 我了解,对所有连接的对等方(在ZMQ_经

我理解,因为我感兴趣的是让多个客户端以协作的方式相互交谈,可能有一个服务器代理或中间件。这将有助于在相关实体之间接收和转发消息

我的研究/情况案例如下: 我想通过图表中的步骤号交互来表示工作流。我希望不要给我的图表带来不便,我只是参考它来更好地说明我的情况

在两个客户端节点之间实现双向、异步消息以交换消息的合适模式是什么

因为这一切。。。我一直在阅读
ZMQ_路由器
ZMQ_经销商
sockets,它们似乎是一个不错的选择,因为正在进行和即将到来的路由策略

我了解,对所有连接的对等方(在
ZMQ_经销商
中)发送的每条消息进行排队的过程,以及发送的每条消息在所有连接的对等方之间进行循环

在这种情况下,robined是什么意思

使用
ZMQ_路由器
时,在传入路由策略方面会发生类似的情况

我一直在测试,但这个过程是同步的,因为我在
REQ-ROUTER-DEALER-REP
设置中使用了它,但是在这种情况下
REQ->ROUTER
send不会针对另一端的特定处理程序,它只会转到任意一个处理程序,路由器会确保回复返回到原始发送方

我认为我在zeromq邮件列表中的情况类似

经纪人方法
路由器-经销商
。。。想想看,这是对的吗? 或者通信可以是客户对客户的直接通信


我问这一切是为了分享我的想法,了解并接受ZMQ人员关于在两个客户端节点之间实现双向异步消息的适当模式的一些指导。

在您的服务器代码上,您希望运行
ZMQ\u路由器
,并
将其绑定到已知端口

然后,每个客户端应用程序应创建一个
zmq_经销商
套接字,并
连接
到ip和绑定到的路由器端口。在连接之前,您可能希望在套接字上设置一个id,用于标识每个客户端

为了确保客户机将消息发送到正确的位置,我们需要附加他们希望与之交谈的客户机的id作为第一个消息部分,以允许它通过路由器路由到正确的客户机


<>你只会在循环中遇到问题,如果你在每个代码中都有多个连接,经销商/代码>套接字,即直接连接到其他客户经销商插座。< /P>在C++中检查Boost ASIO聊天服务器示例。它支持多个客户端,并且在双工模式下工作。它是第一个图形吗?我的服务器只将
bind()
绑定到一个已知端口,并且只有该端口将链接到不同的N个现有客户端?我一直在阅读您的建议,我发现在我的案例中,我可能需要在每个客户端中模拟或实现REQ/REP吗?我还没有弄清楚这一点…异步客户机/服务器是您正在寻找的。绑定到单个已知端口,然后将所有客户端仅连接到服务器上的该端口。然后使用客户端ID在不同的客户端之间异步发送消息。@bgarcial如果需要额外的性能,可以这样做。我曾经成功地使用过经销商->路由器->经销商模式,不需要额外的工作套接字。查看多部分消息-