我必须创建单个服务器进程 A 和多个客户端进程。都应该使用 Linux POSIX IPC 消息队列进行数据传递。消息将双向流动。也有可能有时多个客户端进程可能已注册到服务器进程 A。
目前我只使用一个命名的消息队列,它由服务器进程 A 创建和打开,并由客户端进程(仅)使用/打开。这适用于两个进程场景(即一个服务器进程 A 和一个客户端进程 B),但不适用于多个客户端进程和一个服务器进程。
我在这里面临的问题是设计/逻辑。我应该如何将服务器进程 A 上的消息从其他客户端进程中解复用,以及从服务器进程 A 的回复应该只发送回各自的客户端进程,或者它可以发送回所有客户端进程,但它必须仅在各自的客户端进程中处理。
例如,我只给出一个场景。假设进程 A 已创建消息队列 X。进程 B 和 C 现在即将启动并打开消息队列 X。现在进程 B 将请求消息发送到消息队列 X,但这里的问题是进程 A 和进程 C 都将通过入队唤醒事件。在这里,进程 C 如何理解 Message 不属于它。
- IPC 消息大小小于 128 字节。
- IPc 消息是定义结构,包含整数和字节数组。结构中没有双/浮点数。
- IPC 消息队列处于 NON_BLOCKING 模式。
- 对高性能没有要求。
- 语言:C
- 编译器:GCC
- 平台/操作系统:Linux
- IPC 消息队列:仅 POSIX。
- 我不打算使用其他 IPC 机制,如 System V 消息或 Unix 本地套接字或管道等。
如果需要更多详细信息,请告诉我。
请建议我解决这个问题。
仅供参考:我已经在数据库中搜索过,但我找不到类似的问题已经被问到/回答过,所以请确保在将其标记为重复之前。如果您发现类似的问题已经被询问和回答,请提供链接。