Pregunta

¿Cuál es la forma correcta de configurar una canalización con nombre en C # a través de una red?

Actualmente tengo dos máquinas, 'cliente' y 'servidor'.

El servidor configura su canalización de la siguiente manera:

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

El cliente configura su conexión de la siguiente manera:

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

Se puede acceder a la máquina del 'servidor' en la red yendo a " \\ servidor " ;.

Cada vez que ejecuto el programa, obtengo una excepción System.Unauthorizedized Access que dice "Acceso denegado a la ruta". El código funciona bien cuando ejecuto el servidor y el cliente en mi máquina local e intento conectarme a ". & Quot; con el cliente.

¿Fue útil?

Solución

No es posible utilizar tuberías con nombre entre máquinas.

" El adaptador WCF-NetNamedPipe proporciona comunicación entre procesos en la misma computadora "

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

Otros consejos

Es necesario establecer permisos en NamedPipeServerStream para que el cliente tenga permisos para acceder a la canalización.

Miraría el método SetAccessControl de su NamedPipeServerStream.

Busque en el espacio de nombres System.Runtime.Remoting. IIRC, las canalizaciones con nombre son una opción para el protocolo utilizado por los canales remotos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top