【发布时间】:2011-11-03 10:51:15
【问题描述】:
这两种IPC机制看起来很相似,有什么区别吗?
【问题讨论】:
标签: winapi ipc named-pipes
这两种IPC机制看起来很相似,有什么区别吗?
【问题讨论】:
标签: winapi ipc named-pipes
我认为 MSDN 上对每种机制的介绍都回答了这个问题:
邮槽是一种用于单向进程间通信 (IPC) 的机制。应用程序可以将消息存储在邮槽中。邮槽的所有者可以检索存储在那里的消息。这些消息通常通过网络发送到指定计算机或指定域中的所有计算机。
命名管道是一种命名的单向或双工管道,用于管道服务器和一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道
所以:
(总结:邮槽很像UDP,但命名管道更接近TCP。计算机之间邮槽的424字节限制比普通网络上的UDP数据包更有限。)
虽然邮槽和命名管道都可以具有 ACL(限制不同客户端用户可以执行的操作),但命名管道还允许委托客户端身份,以便服务器可以作为该用户(或被阻止)操作(访问其他资源)。
(已编辑以更正有关安全性的信息,并注意邮槽消息大小限制。)
【讨论】:
Also named pipes provide no security mechanisms, whereas named pipes have - 错字?
LPSECURITY_ATTRUBUTES,它们被命名为内核对象。他们确实提供了安全保障! msdn.microsoft.com/en-gb/library/aa365147(v=VS.85).aspx
邮件槽没有像命名管道那样明确的基于 ACL 的权限。无法阻止特定用户组访问邮槽。源 windows 安全书。
【讨论】: