名前付きパイプを介して相互に通信する2つの.NETアプリケーションがあります。最初はすべてが素晴らしいですが、最初のメッセージが送信され、サーバーが再びリッスンしようとすると、メソッドはwithメッセージをWaitForConnection()
スローします。パイプが壊れています。
ここでこの例外が発生するのはなぜですか?パイプを扱うのはこれが初めてですが、過去にソケットを使った場合も同様のパターンでうまくいきました。System.IO.Exception
コードアホイ!
サーバ:
using System.IO.Pipes;
static void main()
{
var pipe = new NamedPipeServerStream("pipename", PipeDirection.In);
while (true)
{
pipe.Listen();
string str = new StreamReader(pipe).ReadToEnd();
Console.Write("{0}", str);
}
}
クライアント:
public void sendDownPipe(string str)
{
using (var pipe = new NamedPipeClientStream(".", "pipename", PipeDirection.Out))
{
using (var stream = new StreamWriter(pipe))
{
stream.Write(str);
}
}
}
sendDownPipeを最初に呼び出すと、サーバーは私が送信したメッセージを正常に出力しますが、ループバックして再度リッスンすると、うんちをします。