인터넷에 있는 파일을 다운로드 받을 수 있는 코드를 짜 보았다.
wininet.h 헤더에 있는 함수들로, 인터넷 검색을 통하여 예제들을 시험해 보며 짰다.
InternetOpen()함수와 InternetOpenURL, InteInternetReadFile 함수 등으로 인터넷 상의 파일을 다운로드 받을 수 있다.
이 내용을 함수로 추려서 downloadFile()함수를 짜 두었다. 편의성을 위해, 나중에 코드 공부하면서 다시 찾아볼 수 있게 말이다.
사용법은 downloadFile("https://www.naver.com", "naver.html"); 이렇게 사용할 수 있다.
파일을 오브젝트 파일과 헤더 파일로 만들어서, 구별해 두었다.
DownloadFromInternet
오브젝트 파일을 컴파일 시 추가해서 컴파일 해도 되고, c와 헤더를 가지고 직접 추가해서 컴파일 해도 된다.
gcc 를 통한 컴파일 시 오브젝트 파일 추가던 c + 헤더던간에 -lwininet 옵션을 추가해야 한다.
추가로 이를 이용한 개발 환경 툴 다운로더를 만들었다.
MinGW setup.exe 파일과 sublime text 3 현 최신 버전 portable version .zip 를 다운받아 주는 프로그램이다.
fast_dev_env_downloader
wininet.h 헤더에 있는 함수들로, 인터넷 검색을 통하여 예제들을 시험해 보며 짰다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include "Winfiledown.h"
int downloadFile(const char * server, const char * filename) {
HINTERNET hinet, hurl;
DWORD size, readsize;
TCHAR *buffer;
FILE * wfp;
hinet = InternetOpen("HTTPS",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
if (hinet == NULL) return GetLastError();
hurl = InternetOpenUrl(hinet,
server,
NULL,
0,
INTERNET_FLAG_KEEP_CONNECTION,
0);
if (hurl == NULL) {
InternetCloseHandle(hinet);
return GetLastError();
}
wfp = fopen(filename, "wb");
if (wfp == NULL) {
InternetCloseHandle(hurl);
InternetCloseHandle(hinet);
return GetLastError();
}
buffer = (TCHAR*)malloc(sizeof(TCHAR) * SIZE_BUF);
do {
InternetQueryDataAvailable(hurl, &size, 0, 0);
if (size > 1024 * 1024) size = 1024 * 1024;
InternetReadFile(hurl, buffer, size, &readsize);
fwrite(buffer, size, 1, wfp);
} while (size != 0);
InternetCloseHandle(hurl);
InternetCloseHandle(hinet);
hurl = NULL;
hinet = NULL;
fclose(wfp);
free(buffer);
return 0;
}
| cs |
InternetOpen()함수와 InternetOpenURL, InteInternetReadFile 함수 등으로 인터넷 상의 파일을 다운로드 받을 수 있다.
이 내용을 함수로 추려서 downloadFile()함수를 짜 두었다. 편의성을 위해, 나중에 코드 공부하면서 다시 찾아볼 수 있게 말이다.
사용법은 downloadFile("https://www.naver.com", "naver.html"); 이렇게 사용할 수 있다.
파일을 오브젝트 파일과 헤더 파일로 만들어서, 구별해 두었다.
DownloadFromInternet
오브젝트 파일을 컴파일 시 추가해서 컴파일 해도 되고, c와 헤더를 가지고 직접 추가해서 컴파일 해도 된다.
gcc 를 통한 컴파일 시 오브젝트 파일 추가던 c + 헤더던간에 -lwininet 옵션을 추가해야 한다.
추가로 이를 이용한 개발 환경 툴 다운로더를 만들었다.
MinGW setup.exe 파일과 sublime text 3 현 최신 버전 portable version .zip 를 다운받아 주는 프로그램이다.
fast_dev_env_downloader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
#include "Winfiledown.h"
int main(int argc, char const ** argv)
{
int sel;
int erc;
char * server[256] = {
"https://download.sublimetext.com/Sublime%20Text%20Build%203211.zip",
"https://mirrors.xtom.com.hk/osdn//mingw/68260/mingw-get-setup.exe"
};
char * filename[128] = {
"Sublime3.zip",
"MinGW_get_setup.exe"
};
downloadFile(server[1], filename[1]);
downloadFile(server[0], filename[0]);
return 0;
}
| cs |
'개발, 연습' 카테고리의 다른 글
[c++] 열혈 c++ 문제 4-X (0) | 2020.07.01 |
---|---|
[프로그래밍] 프로그램 다운로드 툴 (0) | 2020.07.01 |
2019 HackCon 후기 (0) | 2020.07.01 |
파일 릴리즈 배포와 디지털 서명 cert (0) | 2020.07.01 |
인스톨러 제작 프로젝트 (0) | 2020.07.01 |