블로그 이미지
게임개발자 그건일

카테고리

분류 전체보기 (236)
개발 (139)
취미생활 (75)
기타 (20)
Total105,982
Today30
Yesterday14

'wininet'에 해당되는 글 2건

  1. 2011.10.16 wininet : 웹파일 다운로드 코드
  2. 2010.10.16 GenericHTTPClient
웹서버의 파일을 다운로드하는 코드
(패치시스템을 만들때 기본이죠)
  
 
#include 
#include 
#pragma comment(lib, "wininet.lib")

void download()
{
	HINTERNET hInternet = InternetOpenA("HTTPFILE", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
	HINTERNET hURL = InternetConnectA(hInternet, "www.gamecodi.com", 80, "", "", INTERNET_SERVICE_HTTP, 0, 0);
	HINTERNET hRequest = HttpOpenRequestA(hURL, "GET", "/top_logo_main.gif", NULL, NULL, NULL, 0, 0);
	BOOL bRet = HttpSendRequest(hRequest, NULL, 0, NULL, 0);
	DWORD dwContentLen = 0;
    DWORD dwBufLen = sizeof(dwContentLen);
    BOOL bRet2 = HttpQueryInfo(
		hRequest,
		HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER,
		(LPVOID)&dwContentLen,
		&dwBufLen,
		0
		);

	FILE* f = NULL;
	fopen_s(&f, "a.png", "w+b");

	CHAR buf[1024*10];
	DWORD dwRecvLen = 0;
	DWORD dwBytesRead = 0;
	while(dwContentLen > dwRecvLen)
	{		
		BOOL bRet3 = InternetReadFile(hRequest, buf, sizeof(buf), &dwBytesRead);
		if(!bRet3 || dwBytesRead == 0)
		{
			DWORD dwErr = GetLastError();
			dwErr = 0;
			break;
		}

		dwRecvLen += dwBytesRead;

		fwrite(buf, 1 , dwBytesRead, f);
		printf_s("size: %10d / %10d (%3.2f)\n", dwRecvLen, dwContentLen, float(dwRecvLen)/float(dwContentLen) * 100.0f);
	}

	fclose(f);

	InternetCloseHandle(hRequest);
	InternetCloseHandle(hURL);
	InternetCloseHandle(hInternet);

	return 0;
}

 
 
 
 
 
저작자 표시
신고
Posted by 그건일

GenericHTTPClient

기타 / 2010.10.16 13:00
codeproject 에서 한국사람 발견

#define __DEFAULT_AGENT_NAME "MERONG(0.9/p)"
라는 놀라운 말이 정의 되어있다.

GenericHTTPClient 는 순수 Windows API 로 만든 웹통신 클레스 이다.
유니코드로 만들어져있어서 멀티바이트로 수정 해야 했었다.
HTTPS 를 인식하도록 코드 변경 필요

사용자 삽입 이미지




신고
Posted by 그건일

최근에 달린 댓글

최근에 받은 트랙백

글 보관함