Добрый день!
Подскажите, как правильно принимать и разбирать http-ответ от сервера? При условии, что в запросе Connection: Keep-Alive.
например:
— прочитать в буфер как можно больше данных в первый раз;
— разобрать буфер в поисках Content-Length, если найден, то ищем конец заголовка, вычисляем длину всего сообщения;
— вычитываем из сокета остатки запроса (или очередную порцию для вычисления длины всего сообщения);
— правильно реагируем на Connection в ответе (если close, то закрываем соединение).
Как это делать оптимально с точки зрения скорости?
M>Добрый день! M>Подскажите, как правильно принимать и разбирать http-ответ от сервера? При условии, что в запросе Connection: Keep-Alive. M>например: M>- прочитать в буфер как можно больше данных в первый раз; M>- разобрать буфер в поисках Content-Length, если найден, то ищем конец заголовка, вычисляем длину всего сообщения; M>- вычитываем из сокета остатки запроса (или очередную порцию для вычисления длины всего сообщения); M>- правильно реагируем на Connection в ответе (если close, то закрываем соединение). M>Как это делать оптимально с точки зрения скорости?
Для начала нужно прочесть код ответа сервера, т.е. первую строку, а потом, если нужно, оптимальными порциями (размер буфера по умолчанию), вычитывать и парсить остальное, тело ответа, если известна длина -- в буфер этой длины. Но это если клиент планируется "умный", если нет то пусть читает все до таймаута в большой буфер, а потом парсит, если надо.