我记得在两台机器之间使用命名管道进行通信(在Windows NT中)。为什么我现在读到命名管道只用于同一台机器中的进程间通信?(在Vista和Windows 7中)
发布于 2009-11-06 13:36:45
作为操作系统基础设施的命名管道完全可用于机器之间的通信-请参阅MSDN docs on Named Pipes。
命名管道可用于在同一台计算机上的进程之间或网络上的不同计算机上的进程之间提供通信。如果服务器服务正在运行,则可以远程访问所有命名管道。如果您打算仅在本地使用命名管道,请拒绝对NT AUTHORITY\NETWORK的访问或切换到本地。
然而,我假设您可能正在谈论WCF绑定"NetNamedPipe“,它实际上是仅在同一台机器上的通信。为什么会出现这种情况,你必须去问WCF设计团队-我没有任何关于这方面的信息。
但正如Stephen C所说的那样-如果你需要机器对机器的通信(在WCF中),使用netTcpBinding代替-两者在功能、速度和特性集上非常相似。
有关命名管道,请参阅此article on the support added in .NET 3.5。
Marc
发布于 2009-11-06 13:34:36
因为如果它们是非本地的,就会被称为Socket。
编辑:实际上,这是一个相当轻率的、以UNIX为中心的答案。在UNIX上,命名管道仅用于本地通信。相比之下,套接字既可以用于本地通信,也可以用于非本地通信,并且可以使用各种传输协议。另一个不同之处在于你找到它们的方式。命名管道通常在文件系统命名空间中找到。套接字(或者更准确地说,套接字端点)由某种网络地址标识,该网络地址通常在某种名称服务器/服务中查找。
https://stackoverflow.com/questions/1685566
复制相似问题