我正在開發一個需要分析塊式HTTP傳輸的客戶端。我用頭撞牆,試圖找出以下錯誤,並希望有人能夠更快地發現我的錯誤。總結一下這個問題:似乎客戶端並沒有收到所有的數據塊,從而搞砸了剩下的過程。提前致謝!C解析HTTP分塊傳輸編碼響應
while(cflag){
pfile_chunk = malloc(CHUNK_SIZE+1);
memset(pfile_chunk, 0, CHUNK_SIZE);
cPtr = pfile_chunk;
cPtr2 = NULL;
k=0;
while(*(cPtr-1) != '\n'){
k++;
recv(sock, cPtr, 1, 0);
cPtr = pfile_chunk+k;
}
cPtr2 = strchr(pfile_chunk, '\r');
*cPtr2 = '\0';
sscanf(pfile_chunk, "%x", &l);
if(l == 0)
break;
printf("\nServer wants to deliver %ld bytes.\n", l);
pfile_chunk = realloc(pfile_chunk, l+1);
memset(pfile_chunk, 0, l);
recv(sock, pfile_chunk, l, 0);
fputs(pfile_chunk, f);
printf("GOT THIS, SIZE %ld:\n%s\n", strlen(pfile_chunk), pfile_chunk);
//get next \r\n bytes.
recv(sock, NULL, 2, 0);
}
我爲這些草率的代碼事先道歉,這或多或少是我嘗試許多不同事情的結果。 – 2012-07-23 22:05:43
你介意發佈你的最終清理代碼嗎?我也在爲這個任務而努力。不知道如何協調從緩衝區讀入的內容與實際的HTTP塊。在解析塊之前是否存儲整個HTTP響應? – 2012-08-24 09:02:03