Я пытаюсь создать двусторонний канал связи между двумя программами (одна на Python, а другая на C #)
Когда я создаю именованный канал между двумя программами C # или двумя программами Python, все в порядке, но когда я пытаюсь (например) подключиться к серверу C # из кода Python, это не работает:
C # код:
NamedPipeServerStream server = new NamedPipeServerStream(
"Demo", PipeDirection.InOut, 100, PipeTransmissionMode.Byte,
PipeOptions.None, 4096, 4096)
Если я использую win32pipe
в Python, блоки кода на ConnectNamedPipe
(никогда не возвращаются)
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)
Если я использую функцию открытия, она просто устанавливает соединение, но ничего не происходит:
open( '\\\\.\\pipe\\Demo', 'r+b' )
Теперь, если я закрою программу Python, сервер C # получает только один элемент данных от Python и System.IO.IOException
вызывает сообщение «Pipe is broken»
Я что-то не так делаю?