我正在尝试创建两个程序之间的双向通信渠道(一个是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#服务器只会从Python接收到一个数据项,并且会出现“管道已中断”的错误信息System.IO.IOException
我做错了什么吗?