我是 IPC 的新手,我正在尝试实现一种安全的 IPC 方法(与加密无关)。
我正在使用 Visual Studio 2010 用 C++ 开发一个系统(但将移植到其他平台 Linux/MacOS/FreeBSD),该系统有一个进程“A”,需要接收 XML 并将其发送到其他进程“B”同一台计算机,但将存在大约 14 个进程,如“B”(B1、B2、...、B14),需要向进程“A”发送/接收 XML。
进程“A”将充当每个进程“B”之间的代理/桥梁,进程“B”必须发送的所有数据/XML将被发送到进程“A”,只有进程“A”将将数据/XML 发送到进程“B”。
我正在寻找一种 IPC 方法来在进程“A”和“B1…B14”之间交换这些数据。共享内存听起来不错,但是任何进程都可以写入/读取地址,所以这不安全(我知道可以设置权限访问)。
我正在尝试找到一种 IPC 方法:
必须是本地唯一方法,我需要避免远程连接。
出于安全原因,当一个进程打开一个“通信通道”来发送/接收数据时,其他进程不能使用相同的“通道”(不像共享内存或 Boost Message Queue 可以在该通道上写入,或者NamedPipe 可以用给定名称打开其他实例),我想避免虚假/恶意过程。TCP 听起来不错,因为两个进程不可能在同一个端口上侦听(但不仅仅是本地的)。
3-进程“A”将是一个服务,一些进程“B”也将作为服务运行,而其他进程“B”将作为非特权用户运行,所以这不能是管理员独有的功能。
4- 这个项目将是代码封闭的,所以我不能使用基于 GPL 许可证的代码/库。
5- 如果可能,跨平台(Windows/Linux/MacOS/FreeBSD)。
有人可以建议一种合适的 IPC 技术,无论是内置在操作系统中还是需要第三方库?