У меня есть приложение сервер / клиент.
Оба используют BinaryReader / Writer при общении.
Когда клиент и сервер обмениваются сообщениями быстро, многие через определенную секунду, и я выключаю сервер (с помощью встроенной команды, упорядоченное завершение работы) большую часть времени (но не всегда) клиентского BinaryReader.ReadString () Метод генерирует EndOfStreamException, что нормально. Я не понимаю, почему это исключение не изменяет свойство TcpClient.Connected на «false»?
while(true){
try{
BinaryReader.ReadString()
}
catch(IOException){
if(!TcpClient.Connected)
break;
//BinaryWriter.Write() - this will, eventually, change Connected property to 'false'
}
}
Это зациклится бесконечно. Я думал, что свойство Connected изменяется при неудачном чтении / записи в сети. Если BinaryReader генерирует исключения, значит, он не читается успешно?
Если я добавлю BinaryWriter.Write (), то бесконечный цикл прерывается, потому что свойство Connected изменяется на «false».
Смежный вопрос, всегда ли EndOfStreamException указывает на разорванное сетевое соединение или это может означать временную проблему?