Platform/소켓

HTTP - Win32

jjryu 2009. 2. 13. 20:30
웹서버만 있으면 된다.

Windows Internet API(WinINet API)
    HTTP
    FTP
    gopher

    서버를 만드는 데는 사용할 수 없다

    wininet.dll

#include <wininet.h>

InternetOpen()
INTERNET_OPEN_TYPE_PRECONFIG
InternetConnect()
INTERNET_DEFAULT_HTTP_PORT

INTERNET_SERVICE_HTTP
InternetOpenUrl()
INTERNET_FLAG_DONT_CACHE
HttpQueryInfo()
InternetCloseHandle()
InternetQueryDataAvailable()
InternetReadFile()
요청한 크기보다 작을 수 있다.
HttpOpenRequest()
파일 이름에 한글이 포함된 경우 UTR-8로 변환 후 URL 인코딩을 한다.(이것 땜에 사경을 헤맸네..)
HttpEndRequest()
HttpAddRequestHeaders()
HttpSendRequest()
HttpSendRequestEx()
InternetWriteFile()
InternetCrackUrl()
HttpQueryInfo()

InternetSetFilePointer()
로컬 PC의 캐시에 적용되기 때문에 큰 파일에는 사용하면 안될 것 같음    // ???
InternetSetStatusCallback()
InternetGetCookie()
InternetSetCookie()
InternetSetOption()
InternetQueryOption()


               



해당하는 컴퓨터가 인터넷에 연결되어있는지의 여부를 알려면 다음과 같이 하면 된다.
IBindStatusCallback
    .GetBindInfo()
    .OnStartBinding()
    .OnStopBinding()
    .OnProgress()
        S_OK
        E_ABORT

        ulProgress
        ulProgressMax
        ulStatusCode
            BINDSTATUS_FINDINGRESOURCE
            BINDSTATUS_CONNECTING
            BINDSTATUS_SENDINGREQUEST
            BINDSTATUS_MIMETYPEAVAILABLE
            BINDSTATUS_BEGINDOWNLOADDATA
            BINDSTATUS_ENDDOWNLOADDATA
            BINDSTATUS_CACHEFILENAMEAVAILABLE
            BINDSTATUS_DOWNLOADINGDATA
        szStatusText

URLDownloadToFile()
URLDownloadToCacheFile()
combine the capabilities of asynchronous monikers and URL monikers into easy-to-use functions
do not have to worry about the protocols used to transfer the files, such as HTTP, FTP. In the simplest case, all you have to do is to pass them the URL

szURL // 다운받을 URL
szFileName // 내려받은 파일 이름

비동기 모니커
URL 모니커
IMoniker
::CreateURLMoniker()
.BindToStorage()


참조 사이트: