命名管道和邮箱(邮箱)有什么区别?

时间:2011-08-25 07:58:16

标签: winapi ipc named-pipes

看来这2个IPC机制彼此非常相似,它们之间有什么区别吗?

2 个答案:

答案 0 :(得分:9)

我认为MSDN上每个机制的介绍都回答了这个问题:

  1. Mailslots

      

    邮件槽是单向进程间通信(IPC)的机制。应用程序可以在邮件槽中存储消息。邮件槽的所有者可以检索存储在那里的消息。这些消息通常通过网络发送到指定的计算机或指定域中的所有计算机。

  2. Named Pipes

      

    命名管道是命名的单向或双工管道,用于管道服务器与一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道

  3. 所以:

    • 命名管道是面向连接的,而不是邮件槽。
    • Mailslots可用于广播,命名管道不能。

    (摘要:mailslots与UDP类似,但命名管道更接近TCP。计算机之间邮箱的424字节限制甚至比普通网络上的UDP数据包更有限。)

    虽然邮件槽和命名管道都可以具有ACL(限制不同客户端用户可以执行的操作),但命名管道还允许委派客户端的身份,以便服务器可以作为该用户(或被阻止)执行操作(访问其他资源)。

    (编辑以更正有关安全性的信息,并注意邮件邮件大小限制。)

答案 1 :(得分:0)

邮筒没有命名管道中基于ACL的明确权限。无法阻止特定的用户组访问邮件槽。源Windows安全手册。