У меня есть два приложения .NET, которые разговаривают друг с другом по именованному каналу. Все отлично с первого раза, но после того, как первое сообщение отправлено, и сервер снова прослушает, метод WaitForConnection()
выдает сообщение System.IO.Exception
с сообщением Труба.
Почему я получаю это исключение? Это мой первый опыт работы с трубами, но аналогичная модель работала для меня в прошлом с сокетами.
Код ahoy!
Сервер:
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 получает сервер, чтобы печатать сообщение, которое я отправляю, только отлично, но когда он возвращается назад для повторного прослушивания, он копирует.