我试图在两个程序(一个在Python中,另一个在C#中)之间创建一个双向通信通道
当我在两个C程序或两个Python程序之间创建命名管道时,一切正常,但当我尝试(例如)从Python代码连接到C服务器时,它不起作用:
C#代码:NamedPipeServerStream server = new NamedPipeServerStream(
"Demo", PipeDirection.InOut, 100, PipeTransmissionMode.Byte,
PipeOptions.None, 4096, 4096)
如果我在Python中使用win32pipe,那么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函数,它只是建立了一个连接,但什么也没有发生:open( '\\\\.\\pipe\\Demo', 'r+b' )
现在,如果我关闭Python程序,C#server只从Python接收一个数据项,并发出一条带有“Pipe is broken”消息的System.IO.IOException
我做错什么了吗?