Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > HTTP


Автор: akuscher 13.2.2008, 07:42
В спецификации по HTTP 1.1 имеется такой подраздел:

Процесс декодирования транспортного кода может быть представлен в виде псевдопрограммы:
length := 0
read chunksize, chunkextention (if any) and CRLF
while (chunksize > 0)
{
    read chunkdata and CRLF
    append chunkdata to entitybody
    length := length + chunksize
    read chunksize and CRLF
}
read entityheader
while (entityheader not empty)
{
    append entityheader to existing header fields
    read entityheader
}
ContentLength := length
Remove "chunked" from Transfer-Encoding


Как я понимаю с ним нужно работать так: 
1) встречаем первое шестнадцатиричное число read chunksize
2) читаем из сокета  read chunkdata and CRLF
3) прибавляем прибавляем в счетчику длину прочитанных данных length := length + chunksize, но за исключением CRLF
4) встречаем следующее  шестнадцатиричное число....

Вот все выше написанное иногда работает, а иногда нет. 
Что неправильно? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)