Sal*_*gar 1 c++ linux client-server ipc
我之前从未在Linux上编写任何IPC C++.
我的问题是我将拥有多个客户端(编写器)和一个服务器(读取器).所有这些都将在同一台机器上.作者将向读者提供数据块(字符串/结构).然后读者将在FIFO中读取它们并对它们执行某些操作.
据我所知,Linux上的IPC类型是管道或套接字/消息队列.
我只是想知道是否有人可以推荐我走下去的路.我倾向于插座,但我没有真正的基础.在踏上这段旅程之前,有什么我应该阅读/理解的吗?
谢谢
您应该考虑的主要问题是您传递的数据类型,因为这将部分决定您的选择.这取决于您的数据是否有限.如果它没有限制,那么像FIFO或套接字一样的流是合适的; 如果是,那么你可以更好地利用MQ或共享内存等东西.既然你提到了字符串和结构,很难说在你的情况下什么是合适的,但如果你的字符串在一个合理的最大范围内有限,你可以使用任何一些小的摆弄.
第二是速度.对此没有完全正确的答案,但通常它类似于:共享内存,MQ,FiFO,域套接字,网络套接字.
第三是易用性.共享内存是最大的PITA,因为您必须处理自己的同步.只要您的消息长度保持低于PIPE_BUF大小,管道就很容易.操作系统使用MQ处理大部分麻烦.插座很容易,但你有设置样板.
最后,一些IPC机制同时具有POSIX和SYSV变体.通常POSIX是要走的路,除非SYSV类型具有您真正需要或想要的某些功能.
编辑:Count0的回答提醒我你可能对更抽象和更高层次的东西感兴趣.除了ACE,您还可以看看Poco.当然,如果它没有在某处提及Boost,那么没有完整的答案是完整的.
| 归档时间: |
|
| 查看次数: |
4818 次 |
| 最近记录: |