В HTTP вы должны проанализировать и проанализировать данные ответа, которые сервер отправляет вам обратно, чтобы узнать, как все это прочитать.
Сначала сервер отправляет обратно список CRLF-строки заголовка с разделителями, которые заканчиваются пустой строкой с разделителями CRLF.Затем вам нужно посмотреть фактические значения заголовков «Content-Length» и «Transfer-Encoding», чтобы узнать, как читать оставшиеся данные.
Если заголовок «Transfer-Encoding» отсутствует, илиесли в нем нет элемента «chunked», то заголовок «Content-Length» указывает, сколько оставшихся байтов нужно прочитать.Но если заголовок «Transfer-Encoding» содержит элемент «chunked», то вы должны прочитать и проанализировать оставшиеся данные по частям, по одному, чтобы знать, когда заканчиваются данные (каждый кусок сообщает свой собственный размер,и последний блок сообщает размер 0).
И нет, вы не можете полагаться на закрытие соединения после отправки ответа, если в заголовке «Connection» явно не указано «close».Для HTTP 1.1 этот заголовок обычно устанавливается как «keep-alive», а это означает, что сокет остается открытым, чтобы клиент мог отправлять больше запросов на один и тот же сокет.* для более подробной информации.