为什么命名管道是本地的?

时间:2009-11-06 05:17:49

标签: windows-7 windows-vista named-pipes

我记得使用命名管道在2台机器之间进行通信(在Windows NT中)。 为什么我现在读到Named Pipes仅用于SAME机器中的进程间通信? (在Vista和Windows 7中)

2 个答案:

答案 0 :(得分:4)

作为操作系统基础架构的命名管道完全可用于机器间通信 - 请参阅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

马克

答案 1 :(得分:0)

因为如果它们是非本地的,它们将被称为套接字。

编辑:实际上,这是一个相当轻浮的,以UNIX为中心的答案。在UNIX上,命名管道仅用于本地通信。相比之下,套接字可以用于本地和非本地通信,并且可以使用各种传输协议。另一个区别在于你找到它们的方式。命名管道通常位于文件系统命名空间中。套接字(或更准确地说,套接字端点)由某种网络地址标识,通常在某种名称服务器/服务中查找。