2つのプログラム(1つはPythonで、もう1つはC#で)間に双方向通信チャネルを作成しようとしています。
2つのC#プログラムまたは2つの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からデータ項目を1つだけ受け取りSystem.IO.IOException
、「パイプが壊れています」というメッセージが表示されます。
私は何か間違ったことをしていますか?