C # 3.5 - conectando pipe nomeado em toda a rede
-
04-07-2019 - |
Pergunta
O que é a maneira correta de configurar um pipe nomeado em C # através de uma rede?
Atualmente tenho duas máquinas, 'cliente' e 'servidor'.
conjuntos de servidor até sua tubulação da seguinte maneira:
NamedPipeServerStream pipeServer = new NamedPipeServerStream(
"pipe",
PipeDirection.InOut,
10,
PipeTransmissionMode.Byte,
PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe
Os conjuntos cliente até sua conexão da seguinte maneira:
NamedPipeClientStream pipeClient = new NamedPipeClientStream(
"server",
"pipe",
PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe
A máquina 'servidor' pode ser acessado na rede, vá para "\\ server".
Sempre que eu executar o programa, eu recebo um System.UnauthorizedAccessException que diz "O acesso ao caminho é negado." O código fina funciona quando eu executar o servidor e cliente em minha máquina local e tentar se conectar ao "". com o cliente.
Solução
Não é possível usados ??pipes nomeados entre máquinas.
"O adaptador WCF-NetNamedPipe fornece comunicação entre processos no mesmo computador "
Outras dicas
Você precisa definir permissões na NamedPipeServerStream para que o cliente terá permissão para acessar o tubo.
Eu olhava para o método SetAccessControl do seu NamedPipeServerStream.
Olhe no namespace System.Runtime.Remoting. IIRC, pipes nomeados são uma opção para o protocolo usado por canais de comunicação remota.