首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多路进程间通信

多路进程间通信
EN

Stack Overflow用户
提问于 2014-01-30 14:45:54
回答 3查看 316关注 0票数 1

在我的机器中有10个进程,每个进程都应该有相互通信的能力。现在的场景是,所有10个进程都应该处于侦听状态,这样任何进程都可以在任何时候与其通信。同样,在需要时,它应该能够向任何进程传递消息。我试图用C++和unix /udp套接字对其进行编码。然而,我不知道如何构造它。我应该使用UDP还是TCP,哪个更好?进程如何能够同时侦听和发送数据。

我需要帮助。

EN

回答 3

Stack Overflow用户

发布于 2014-01-30 15:44:19

UDP与TCP的决定取决于您的消息是否需要可靠地传递等等。

对于纯TCP,每个对等点都有一个TCP套接字,每个进程在该套接字上接受来自其他对等点的连接(每个接受将导致一个新的套接字)。此新套接字是双向的,可用于从一个对等点发送/接收到另一个对等端。有了这个解决方案,您将需要某种发现机制。

对于UDP来说,除了您不需要接受套接字之外,这几乎是一样的。你还需要某种发现机制。

发现机制可以是另一个具有众所周知(通过配置等)地址的对等点,也可以使用UDP广播作为发现机制。

zeroMQ而言,它的级别略高于原始套接字,您将拥有一个监听和接收数据的ROUTER套接字,以及发送数据的每个对等点的一个DEALER套接字。

无论解决方案是什么,您都可能需要一个线程来使用poll()或类似的方法来处理网络连接,而当接收到消息时,您需要另一个线程(或线程池)来处理这些消息。

票数 1
EN

Stack Overflow用户

发布于 2014-01-30 15:45:15

这个问题适用于任何语言,所以答案与C++无关。

当有选择时,寻找一个库来进行更容易的交流(例如apache-节俭)。

关于TCP/ UDP : TCP通常速度较慢,但更可靠,因此默认情况下,请选择TCP,但可能有选择UDP的理由,如流、多播/广播、.当所有进程都在同一块板上时,可靠性可能不是一个问题,但您可能希望稍后与外部进程进行通信。

线程进程可以使用相同的套接字发送和接收没有锁。

此外,您还需要某种方案来确定要发送哪个端口才能到达进程,而对于TCP,您需要决定是使用静态连接还是在每次发送时连接。

票数 0
EN

Stack Overflow用户

发布于 2014-01-30 15:55:32

你想要做的似乎是传递信息。

在尝试自己构建它之前,先看一看boost mpi

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21459569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档