进程间通信:一台服务器多客户端

Posted

技术标签:

【中文标题】进程间通信:一台服务器多客户端【英文标题】:Interprocess communication: one server and multiple clients 【发布时间】:2010-10-12 04:08:39 【问题描述】:

我有一个“服务器”进程正在运行,它将通过网络为与服务器进程在同一台机器上运行的其他进程获取数据。

我应该如何从本地服务器进程和本地客户端传输数据?

【问题讨论】:

【参考方案1】:

对于通过服务器进程检索网络数据,@radman 建议的 Boost.Asio 是一个不错的选择。

在服务器和本地客户端之间,Boost.Interprocess 会更高效,因为这是进程间数据传输,不需要使用网络。

这些 Boost 库中的每一个都为复杂的底层 Win32 API 提供了一个可立即运行的包装器,因此与构建具有等效功能的自己的专用代码相比,使用这些库可能会更快地获得有效的解决方案。

【讨论】:

【参考方案2】:

您应该查看Boost.Asio,它符合您的问题并且很可靠。

【讨论】:

【参考方案3】:

标准 TCP 套接字适用于同一台机器或不同机器上的多个进程之间的进程间通信。它是标准的,几乎所有平台和几乎所有编程语言都支持。您应该能够轻松找到示例 C++ 代码。

要连接到同一台机器上的套接字,请使用“localhost”作为其名称或使用 127.0.0.1 作为其 IP。

【讨论】:

【参考方案4】:

我相信 Windows 已经命名了管道,它的工作方式与其他答案中的建议类似(尤其是@Irish 的 TCP 套接字建议)。详情请见CreateNamedPipe()。

【讨论】:

以上是关于进程间通信:一台服务器多客户端的主要内容,如果未能解决你的问题,请参考以下文章

微服务架构中的进程间通信

Android——进程间通信方式

Messenger 进程间通信

Unix编程-socket

VC++ 进程间的通信

ipc (进程间通信