청크 형 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);
}
나는 부주의 한 코드에 대해 미리 사과한다. 그것은 나에게 많은 다른 것을 시도한 결과였다. –
최종 정리 코드를 게시 하시겠습니까? 나는이 일에도 어려움을 겪고있다. 버퍼에서 읽은 내용을 실제 HTTP 청크로 조정하는 방법을 잘 모릅니다. 청크를 분석하기 전에 전체 HTTP 응답을 저장합니까? –