当我有两个线程时,我使用了PAIR套接字类型.但现在我使用两个进程,可以在一台机器上,也可以在不同的机器上.我不需要请求和响应,我不需要发送到多个节点等.我需要与PAIR(异步,双向)相同的东西,但是使用进程和网络.我应该使用哪种套接字类型?
不幸的是,你的世界变得有点复杂了。在更广泛的分布式系统中,没有与PAIR/PAIR套接字配对的直接模拟。
也就是说,如果您保持大致相同的拓扑形状(两个节点专门相互连接,没有其他节点),那么您几乎可以实现您想要的使用ROUTER/DEALER甚至DEALER/DEALER(正如您在评论中建议的那样)。这些套接字有点像REQ/REP,但它们不强制执行严格的请求/响应通信模式,它们完全不受限制,因此实际上您会得到相同的东西。唯一的问题是,如果您打算添加更多节点,此时您必须开始以稍微不同的方式管理事物,特别是套接字DEALER不允许您选择发送到哪个节点,它是严格循环的。
但是,这样做应该可以满足您的需求(异步,双向)。
套接字ROUTER类型可能需要一点额外的复杂性,因为您需要跟踪另一个节点的“标识符”以便能够发送回它(您几乎可以免费获得它,特别是在只有一个对等点的情况下,直接从发送的消息中使用它)。因为这是一个独占对,所以您可以忽略套接字引入的循环不确定性DEALER,直接转到DEALER/DEALER,这为您提供了不受限制的消息模式,并且不需要任何身份管理。