C#3.5 – 通过网络连接命名管道

在网络中通过C#设置命名管道的正确方法是什么?

目前我有两台机器,’客户’和’服务器’。

服务器以下列方式设置其管道:

NamedPipeServerStream pipeServer = new NamedPipeServerStream( "pipe", PipeDirection.InOut, 10, PipeTransmissionMode.Byte, PipeOptions.None) pipeServer.WaitForConnection(); //... Read some data from the pipe 

客户端以下列方式设置其连接:

 NamedPipeClientStream pipeClient = new NamedPipeClientStream( "server", "pipe", PipeDirection.InOut); pipeClient.Connect(); //This line throws an exception //... Write some data to the pipe 

可以通过转到“\\ server”在网络上访问“服务器”计算机。

每当我运行程序时,我都会收到一个System.UnauthorizedAccessException,其中显示“拒绝访问路径”。 当我在本地计算机上运行服务器和客户端并尝试连接到“。”时,代码工作正常。 与客户。

在机器之间不可能使用命名管道。

“WCF-NetNamedPipe适配器在同一台计算机上提供跨进程通信”

http://msdn.microsoft.com/en-us/library/bb226493.aspx

您需要在NamedPipeServerStream上设置权限,以便客户端具有访问管道的权限。

我会看一下NamedPipeServerStream的SetAccessControl方法。

查看System.Runtime.Remoting命名空间。 IIRC,命名管道是远程通道使用的协议的一种选择。