2014-12-05 2 views
1

나는 HTTP 클라이언트와 TCP \ IP 프로그래밍에 익숙하지 않으므로, 내 질문은 숙련 된 사람들에게는 막연 할 수도 있지만 대답 해 보시기 바랍니다.HTTP 클라이언트 프로그래밍 - 서버가 모든 데이터를 보냈다는 것을 아는 방법

서버에 요청을 보내면 서버에 요청을 보내고 (비동기 소켓) HTTP 요청 이벤트가 발생하면 읽기 명령을 사용하여 데이터를 추출하여 로컬 버퍼에 저장하고 있습니다.

여기 서버가 모든 데이터를 전송 했으므로 정보 처리를 시작할 수 있다는 것을 어떻게 알 수 있습니까? 이 단계에서 혼란 스럽습니다.

답변

1

콘텐츠를 모두 또는 청크로 반환 할 수 있습니다. 서버가 페이로드의 길이를 직접 확인하면 응답에 Content-Length 헤더를 제공합니다. 그러나 때때로 서버는 전송을 시작하기 전에 페이로드의 총 길이를 알지 못하며 chunk transfer을 사용합니다.

+0

콘텐츠 길이를 0으로 간주합니다. 모든 HTTP 헤더를 한 번에 읽을 수 있습니까? 헤더 정보가 2 개의 패킷으로 전송되지 않습니까? @vtortola – evk1206

+0

길이가 0 인 경우 빈 줄이 나온 후 읽기를 멈출 수 있습니다. http://www.tutorialspoint.com/http/http_messages.htm – vtortola

0

서버의 응답에는 content-length라는 필드가있는 http 헤더가 있어야합니다. 이 길이를 사용하여 서버가 전송해야하는 데이터의 양을 결정할 수 있습니다. 그리고 서버가 주어진 금액을 보내면 데이터 수신 완료.

+0

콘텐츠 길이를 0으로 간주합니다. 모든 HTTP 헤더를 한 번에 읽을 수 있습니까? 헤더 정보가 2 개의 패킷으로 전송되지 않습니까? @ Spooky3d0 – evk1206

+0

지연 응답에 대한 사과 .. shouldnt 나는 이것을 위해 메일을받을 수 있습니까? – Spooky3do

+0

글쎄, 가능합니다. 아마도 전체 헤더를받을 때까지 기다려야 할 것입니다. 그렇지만 지금까지 생각한 것 같습니다 :) – Spooky3do

관련 문제