【发布时间】:2011-04-16 00:26:12
【问题描述】:
本地 IPC 通信使用 POSIX 消息队列还是 Unix 域套接字更好?
我曾在机器(不是域)之间使用 Unix 套接字,我记得建立和断开连接会导致套接字在最终消失之前逗留一段时间。此外,如果你想要一个“可靠的”交换,你要么必须使用 TCP,要么设计应用程序来返回一个 ACK。不过,我不确定这是否也适用于 Unix 域套接字。
在我当前的项目中,我们需要本地 IPC。我的第一反应是使用 POSIX MQueues,因为我以前用它们来进行本地消息传递。但是,一位同事建议改为使用 Unix 域套接字。
是一个比另一个更好,还是编程熟悉度的问题?或者它可能取决于正在创建的应用程序?
总体而言,我们正在开发的应用程序遵循客户端/服务器模型。客户端向服务器发送消息以“做某事”。但是,客户端不会等待“完成”响应——尽管他们确实想知道他们的请求是否已收到。
发送端的基本逻辑是:
connect to server
send request
note if the send worked or not
disconnect from server
一台服务器可以有数百个客户端。
我们正在运行 Linux 操作系统的 SMP 系统(4-8 核)上执行。
提前致谢。
【问题讨论】: