У меня есть сервер, который отправляет данные с кодировкой передаваемых данных. Я использую InternetReadFile для чтения данных, но InternetReadFile не работает с 12004 после прочтения первого фрагмента. Я использовал скрипач (Wireshark), чтобы перехватить полученные данные. Wireshark отображает второй фрагмент, но InternetReadFile API терпит неудачу.InternetReadFile не работает для ответного ответа
Пример кода:
CString totalbuffer ;
While (1)
{
char recv [ 10 ] = '\0' ;
DWORD dwBytesRead = 0 ;
if (InternetReadFile (httpSocket.hReq , recv, 10 , &dwBytesRead))
{
recv[ dwBytesRead] = '\0' ;
totalbuffer += recv ;
printf (" received buffer : %s" , recv) ;
return 1 ;
}
else
{
printf (" InternetReadFile failed with : %d" , GetLastError ()) ;
return 0 ;
}
};
Wireshark показывает:
HTTP/1.1 200 OK
Transfer-Encoding: фрагментированное
Дата: Ср, 18 Сен 2014 14:16: 16 GMT
Сервер: CHND
Ok \ п
CMD
клиент читает только первые 3 байта кусок. Когда я пытаюсь прочитать следующий 3-байтовый фрагмент «CMD», он не работает.
Просьба помочь с любыми необходимыми изменениями, которые должны быть выполнены на стороне клиента? или если серверу нужно что-то обработать?
Связанные: Вы знаете, что первые 10 байтов, которые вы читаете, если вы заполняете этот буфер, строка сразу же вызывается * неопределенным поведением *, превысив размер вашего массива на один элемент. (т. е. 'dwBytesRead == 10' является плохим для' recv [dwBytesRead] = '\ 0'; ', когда массив имеет ширину всего 10 элементов (и, следовательно, индексируется только от 0..9). – WhozCraig