C#3.5 - 通过网络连接命名管道
-
04-07-2019 - |
题
通过网络在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适配器在同一台计算机上提供跨进程通信”
其他提示
您需要在NamedPipeServerStream上设置权限,以便客户端具有访问管道的权限。
我会查看NamedPipeServerStream的SetAccessControl方法。
查看System.Runtime.Remoting命名空间。 IIRC,命名管道是远程通道使用的协议的一种选择。
不隶属于 StackOverflow