Header
wininet.h
API
InternetOpen( ) - WinInet 함수들을 초기화
InternetConnect( ) - Http혹은 FTP 사이트 연결
HttpOpenRequest( ) - HTTP Request handle 생성
HttpSendRequest( ) - HTTP 서버로 Request 전달
HttpQueryInfo( ) - 파일을 전체크기
InternetQueryDataAvailable( ) - 서버가 바로보낼수 있는 크기를 알려줌
InternetReadFile( ) - 서버로부터 지정된 크기만큼 파일을 읽어옴
InternetCloseHandle( ) - 열려있는 핸들을 닫음
예제
wininet.h
API
InternetOpen( ) - WinInet 함수들을 초기화
InternetConnect( ) - Http혹은 FTP 사이트 연결
HttpOpenRequest( ) - HTTP Request handle 생성
HttpSendRequest( ) - HTTP 서버로 Request 전달
HttpQueryInfo( ) - 파일을 전체크기
InternetQueryDataAvailable( ) - 서버가 바로보낼수 있는 크기를 알려줌
InternetReadFile( ) - 서버로부터 지정된 크기만큼 파일을 읽어옴
InternetCloseHandle( ) - 열려있는 핸들을 닫음
예제
#include < wininet.h >
HINTERNET hOpen, hConnect, hReq;
LPCSTR postheader = "Content-Type: application/x-www-form-urlencoded";
int port = 80;
hOpen = InternetOpen("SimplePost", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
if(hOpen == NULL) {
return -1;
}
// "127.0.0.1"대신에 다운받을 화일이 있는 서버주소를 입력
hConnect = InternetConnect(hOpen, "127.0.0.1", port, 0, 0, INTERNET_SERVICE_HTTP, 0, 0);
hReq = HttpOpenRequest(hConnect, "POST", "/test.bin", "HTTP/1.1", 0, 0, INTERNET_FLAG_NO_CACHE_WRITE, 0);
HttpSendRequest(hReq, postheader, lstrlen(postheader), NULL, 0);
DWORD dwRead = 0;
DWORD Size;
CHAR Data[1025] = "";
FileOpen("Filename");
do
{ // 다운받는화일의 나머지 크기 얻어오기
InternetQueryDataAvailable(hReq,&Size,0,0); // 남은 크기가 1024보다 크면 1024로 고정
if(Size>1024) Size = 1024;
InternetReadFile(hReq, (LPVOID)Data, Size, &dwRead);
if(dwRead) {
Data[dwRead] = 0x00;
FileWrite(Data, Size);
}
} while(dwRead != 0); //읽어온 데이터의 크기가 0이 아니면 계속 반복
FileClose();
InternetCloseHandle(hConnect);
InternetCloseHandle(hOpen);
hConnect = NULL;
hOpen = NULL;
// FileOpen(), FIleWrite(), FIleClose()함수 별도