Я пытаюсь создать двусторонний канал связи между двумя программами (одна на Python, а другая на С#)
Когда я создаю именованный канал между двумя программами C# или двумя программами Python, все в порядке, но когда я пытаюсь (например) подключиться к серверу C# из кода Python, это не работает:
Код С#:
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
поднимется с сообщением «Канала сломана».
Я делаю что-то не так?