Определить конец потока TcpClient - C#
Формулировка задачи:
Использую GetStream(), и выкачиваю данные оттуда. Проблема в том, что если не определить конец потока, то после завершения считывания данных, чтение зависает, ожидая поступление новых данных, и ждет довольно долго (если таймаут бесконечный), только потом объявляет, что соединение закрыто.
Необходимо понять когда сервер уже завершил передачу данных, дабы поток не простаивал. Если бы всегда указывался заголовок Content-Length, то все былобы проще но он не всегда доступен.
Есть еще свойство такое у потока DataAvailable, но оно показывает false переодически ибо данные не в любой момент времени доступны, а поток нужно считать доконца.
Решение задачи: «Определить конец потока TcpClient»
textual
Листинг программы
bool GetDataAvailable() { for (int i = 0; i < DataAvailableTimeout/5 && !TCPStream.DataAvailable; i++) { System.Threading.Thread.Sleep(5); } return TCPStream.DataAvailable; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д