【发布时间】:2009-11-06 05:17:48
【问题描述】:
我记得使用命名管道在两台机器之间进行通信(早在 Windows NT 中)。 为什么现在我读到命名管道仅用于同一台机器中的进程间通信? (在 Vista 和 Windows 7 中)
【问题讨论】:
标签: windows-7 windows-vista named-pipes
我记得使用命名管道在两台机器之间进行通信(早在 Windows NT 中)。 为什么现在我读到命名管道仅用于同一台机器中的进程间通信? (在 Vista 和 Windows 7 中)
【问题讨论】:
标签: windows-7 windows-vista named-pipes
作为操作系统基础架构的命名管道完全可用于机器间通信 - 请参阅MSDN docs on Named Pipes。
命名管道可用于提供 进程之间的通信 同一台计算机或进程之间 网络中的不同计算机。 如果服务器服务正在运行,全部 命名管道可以远程访问。 如果您打算使用命名管道 仅限本地,拒绝访问 NT AUTHORITY\NETWORK 或切换到本地 RPC。
但是,我假设您可能在谈论 WCF 绑定“NetNamedPipe”,它确实是仅在同一台机器上的通信。为什么会这样,您必须询问 WCF 设计团队 - 我没有任何相关信息。
但正如 Stephen C 所说的那样 - 如果您需要机器对机器的通信(在 WCF 中),请改用 netTcpBinding - 两者在功能、速度和特性集方面非常相似。
有关命名管道,请参阅此 article on the support added in .NET 3.5。
马克
【讨论】:
因为如果它们是非本地的,它们将被称为套接字。
编辑:实际上,这是一个相当轻率的、以 UNIX 为中心的答案。在 UNIX 上,命名管道仅用于本地通信。相比之下,套接字既可用于本地通信,也可用于非本地通信,并且可以使用多种传输协议。另一个不同之处在于您找到它们的方式。命名管道通常位于文件系统命名空间中。套接字(或更准确地说,套接字端点)由某种网络地址标识,该地址通常在某种名称服务器/服务中查找。
【讨论】: