Tubos con nombre entre C # y Python
Estoy tratando de crear un canal de comunicación de dos vías entre dos programas (uno en Python y otro en C #)
Cuando creo una canalización con nombre entre dos programas C # o dos programas Python, todo está bien, pero cuando intento (por ejemplo) conectarme al servidor C # desde el código Python, no funciona:
Código C #:
NamedPipeServerStream server = new NamedPipeServerStream(
"Demo", PipeDirection.InOut, 100, PipeTransmissionMode.Byte,
PipeOptions.None, 4096, 4096)
Si yo usowin32pipe
en Python, bloques de código enConnectNamedPipe
(nunca vuelve)
p = win32pipe.CreateNamedPipe(
r'\\.\pipe\Demo',
win32pipe.PIPE_ACCESS_DUPLEX,
win32pipe.PIPE_TYPE_BYTE | win32pipe.PIPE_WAIT,
1, 65536, 65536,
300,
None)
win32pipe.ConnectNamedPipe(p)
Si uso la función de apertura, solo establece una conexión, pero no ocurre nada:
open( '\\\\.\\pipe\\Demo', 'r+b' )
Ahora, si cierro el programa Python, el servidor C # recibe solo un elemento de datos de Python y unSystem.IO.IOException
plantea con el mensaje "El tubo está roto"
Estoy haciendo algo mal ?