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.

Foi útil?

Solução

Não é possível usados ??pipes nomeados entre máquinas.

"O adaptador WCF-NetNamedPipe fornece comunicação entre processos no mesmo computador "

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top