Определить конец потока 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;
}