본문 바로가기

김탱 개발자/MFC

CHttpFile의 GetLength 함수

HTTP protocol을 통해 Json 데이터포맷을 이용하여 데이터를 주고받고 있는데, 데이터를 받는 쪽(클라이언트)에서

data 크기를 받아와 읽어야 한다.


근데 불친절한 서버는 헤더에 Content-Length가 없는 경우, 받는 쪽에서 크기를 구해내야 한다.

이부분에서 멍청하게 삽질을 해서 기억도 할겸 적는다.


MSDN : https://msdn.microsoft.com/ko-kr/library/5y092fke.aspx


CInternetFile::Read 함수 이용 시 사이즈를 지정해줘야하는데

CInternetFile::GetLength 함수 이놈으로 크기를 받는 수 밖에 없다.

(서버에서 Content-Length를 헤더에 붙여 보내줄 경우 고민할 필요가 없음)


근데 이 GetLength()가 데이터 전체크기가 아닌 실제 받는 데이터의 크기를 가져오는 것이였다..

ex) 2000byte 데이터인데 500byte씩 4번 크기를 반환..


(정확한 이유는 알수없다, 게다가 언제는 전체데이터크기 반환하고 언제는 분할해서 반환하는 것 때문에 골치아팠다)


결론은, 반복해서 반환크기만큼 읽고 반환크기가 0이면 그만하면 된다.