에 오늘 아는 횽님이 http로 파일 다운로드 하는 모듈 함 만들어 봐라 해서
집에와서 씻고 한 3시간 만에 대충 어떻게 만들어야 하는지 알아낸거 같다 -_-
그래서 정리 해본다.

일다 사용한것은 wininet 함수를 사용하였다.
대략 함수의 중요 요점만 정리 해보겠다.

1. InternetOpen() 함수
   웹서버에 접속하기 위해 최초로 만드는 핸들이다. 이건 뭐 특별할꺼 없으니 패스

2. InternetOpenUrl() 함수
   url 경로를 입력해주면 url에 걸려있는 파일을 바로 열수 있는 함수다 이놈은 초금 중요하다
   보통 3,4 인자값은 NULL, 0 값을 주는데 이놈에게 값을 주면 이어 받기가 가능하다.
   주는 방법은 소스를 정리해서 나중에 주석으로 설명해주겠다.

3. InternetQueryDataAvailable() 함수
   위대한 win32api 정복에는 다음과 같이 설명되어있다.
   요청된 파일의 몇 바이트나 전송할 준비가 되었는지를 두번째 인자에 리턴 해준다 라고
   뭐 웹서버에서 보낸 패킷의 크기가 얼마나 되는지 알려주는거 같다.

4. InternetReadFile() 함수
   요함수는 따로 책에는 설명이 없는데 웹서버가 보낸 패킷을 받는 부분 같다
   뭐 정확하게는 모르겠지만..

5. HttpQueryInfo() 함수
    음 이건 InternetOpenUrl()가 리턴한 인스턴스 핸들 가지고 이용하면 되는건데
    파일의 크기를 알아낼수 있는 함수 인거 같다 다른 기능도 있는거 같은데
    파일 크기는 이걸로 알아낼수 있는거 같다.

일단 필요했던 http 다운로드 기능은 요 5가지 함수를 이용하면 금방 만들꺼 같다
뭐 거기에 더 필요한건 파일 쓰기 정도 -_-
아까 이어 받기 테스트 하는데 가끔 파일을 이상하게 받을때가 있던거 같은데
수작업으로 해서 그렇수도 있으니까
뭐 클래스로 만드는건 천천히 하면 될꺼 같다...

아무튼 한번도 안해봐서 못할줄 알았는데 역시 책보고 데브피아 찾아보고 하면 안되는건 없다...
다음에 올리면 클래스로 만든 소스를 함 올려보도록 하겠다 언제가 될진 나도 잘 모르지만..


by 널부러 2009. 2. 4. 01:26
| 1 2 3 |