Мне кажется, я наконец-то понял это.
Две конечные точки A и B разговаривают друг с другом: A <-> B
Когда A отправляет сообщение B и затем закрывает свой TcpClientобъект, я предположил, что свойство TcpClient.Available на B будет по-прежнему перечислять это последнее сообщение от A как полученное, а затем BinaryReader.ReadString () сможет получить это сообщение, даже если соединение TCP / IP было разорвано A.
Я заметил, что это не всегда так, и теперь я думаю, что понимаю, почему.
После того, как A закрывает соединение, если B только читает из сети, то он сможет получить этопоследнее сообщение от A и свойство Available будет отражать присутствие этого сообщения.Но если B выполняет запись в сеть, эта запись мгновенно обнаружит разорванное соединение и провалит любые последующие операции чтения / записи, даже если свойство Available возвращает> 0.
Так что на самом деле я правильно понял свойство Available, но узнал сегодня, что есть исключения, когда свойство не будет работать так, как ожидалось.
Если я ошибаюсь, исправьте меня.Теперь перейдем к изменению моего приложения.