|
ClientSocket으로 HTML 다운로드시 작업이 들어가는 건 이런 것들입니다.
Response 헤더와 HTML 본문을 서로 구분하는 작업과
TCP/IP로 전송할 때 Socket 버퍼 문제로 분할해서 보내는 Text를 받아들이는 것,
분할해서 받아들일 때 중간에 끼인 CRLFCRLF + 다음 분할 길이 + CRLFCRLF 라는 불필요한 것들을 처리하는 것,
어디가 문서 끝인지 확인하는 것 등등이 있습니다.
전 Request 헤더에 Connection: Close를 추가하여 Socket 접속이 해제되면
그때까지 받은 것이 문서 전문(즉, Socket 접속이 해제되면 거기가 문서 끝)인 것으로 하고
Response 헤더와 HTML 본문은 받아온 내용을 Upper Case 변환해서
< HTML >이 있는 곳을 기점으로 헤더와 본문을 구분하는 무식한 방법을 썼구요.. -_-
(원래 이 부분은 첫번째 발견되는 CRLF+CRLF 를 기준으로 하면 됩니다)
CRLF+CRLF 발견될 때마다 다음 CRLF+CRLF 있는 곳을 찾아서 그 사이에 끼인 부분을 지우고
전체 내용을 정리하는 방법을 썼습니다.
(IdHTTP는 이걸 자동으로 해 주죠)
처리해 줘야 되는 건 많습니다만 처음 한 번 만들어 주면 그 다음부턴 작업이 간단합니다.
(여차하면 컴포넌트로 구성해 버리면 되니까요)
그럼 즐푸하세요
|