Отправка данных через NamedPipe, когда сервер не работает - PullRequest
3 голосов
/ 30 ноября 2010

Мне было интересно, как справиться с ситуацией, когда вы успешно соединили два процесса через именованный канал (один сервер и один клиент), и вдруг (по какой-то причине) процесс сервера завершился.труба?Это закрывается?Что происходит с информацией, отправляемой клиентом на сервер?Это теряется?Как клиент может узнать, не работает ли сервер?

All The Best,

Gil

1 Ответ

1 голос
/ 30 ноября 2010

Если вы используете System.IO.Pipes и NamedPipeServerStream, например, вы получите IOException, если канал сломан или отсоединен.

Когда вы используете NamedPipeClientStream для чтения информации с сервера, я полагаю, что клиент будет ждать, пока соединение не будет установлено на альтернативе вызова NamedPipeClientStream.Connect(), вы можете использовать опцию NamedPipeClientStream.Connect(Int32) для тайм-аута соединения послезаранее определенный период.Кроме того, StreamReader.ReadLine() также может выбрасывать IOException, когда что-то идет не так.

NamedPipeClientStream.IsConnected будет простым способом определить, успешно ли клиент подключен к серверу или он отключен, закрыт или сломан.

...