2

在 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,上面写着“访问路径被拒绝”。当我在本地计算机上运行服务器和客户端并尝试连接到“。”时,代码工作正常。与客户。

4

3 回答 3

4

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

我会看看你的 NamedPipeServerStream 的 SetAccessControl 方法。

于 2008-10-29T10:56:09.437 回答
0

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

于 2008-10-28T18:49:30.747 回答
-5

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

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

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

于 2009-06-22T06:59:08.380 回答