Я работаю над проектом, ориентированным на браузер / прокси, где мне нужно скачать веб-страницы. После отправки пользовательского HTTP-запроса на веб-сервер я начинаю прослушивать ответ сервера.
При чтении ответа я проверяю заголовки ответа для Content-Length: -row. Если я получу один из них, легко определить, когда сервер завершил отправку данных, так как я всегда знаю, сколько байтов данных я получил.
Проблема возникает, когда сервер не включает заголовок Content-Length, а также сохраняет соединение открытым для дальнейших запросов. Например, сервер Google отвечает gzipped-content, но не включает длину контента. Как мне узнать, когда прекратить ждать больше данных и закрыть соединение?
Я рассмотрел вопрос об использовании значения тайм-аута для закрытия соединения, если в течение некоторого времени не было получено данных, но это кажется неправильным способом сделать это. Например, Chrome может загружать те же страницы, что и я, и всегда точно знает, когда закрывать соединение.