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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5