我记得使用命名管道在2台机器之间进行通信(在Windows NT中)。 为什么我现在读到Named Pipes仅用于SAME机器中的进程间通信? (在Vista和Windows 7中)
答案 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上,命名管道仅用于本地通信。相比之下,套接字可以用于本地和非本地通信,并且可以使用各种传输协议。另一个区别在于你找到它们的方式。命名管道通常位于文件系统命名空间中。套接字(或更准确地说,套接字端点)由某种网络地址标识,通常在某种名称服务器/服务中查找。