0
InternetGetConnectedState
BOOL InternetGetConnectedState(OUT LPDWORD lpdwFlags, IN DWORD dwReserved );
判斷當前是否有internet連接
有則返回 true,無則 false
若有連接,則lpdwFlags 中會存放著連接方式
1
InternetOpen初始化WININET.DLL。它在其他的Win32網絡函數之前被調用。
HINTERNET hNet = ::InternetOpen(
"MSDN SurfBear", // 1 LPCTSTR lpszCallerName
PRE_CONFIG_INTERNET_ACCESS, // 2 DWORD dwAccessType
"", // 3 LPCTSTR lpszProxyName
INTERNET_INVALID_PORT_NUMBER, // 4 INTERNET_PORT nProxyPort
0 // 5 DWORD dwFlags
) ;
InternetOpen返回一個類型為HINTERNET的句柄。其他的Win32網絡函數把這個句柄當作一個參數。
InternetOpen 的第一個參數lpszCallerName指定正在使用網絡函數的應用程序。當HTTP協議使用時,這個名字將變成用戶代理。
第二個參數dwAccessType指定訪問類型。
NProxyPort參數用在CERN_PROXY_INTERNET_ACCESS中用來指定使用的端口數。使用INTERNET_INVALID_PORT_NUMBER相當于提供卻省的端口數。
最后一個參數dwFlags,設置額外的選擇。
當結束使用Wein32網絡函數時,應該調用InternetCloseHandle釋放InternetOpen分配的資源。
2
InternetOpenUrl函數連接到一個網絡服務器上并且最被從服務器上讀取數據。InternetOpenUrl能對FTP,Gopher或HTTP協議起作用。
HINTERNET hUrlFile = ::InternetOpenUrl(
hNet, // 1 HINTERNET hInternetSession
"http://www.microsoft.com", // 2 LPCTSTR lpszUrl
NULL, // 3 LPCTSTR lpszHeaders
0, // 4 DWORD dwHeadersLength
INTERNET_FLAG_RELOAD, // 5 DWORD dwFlags
0 // 6 DWORD dwContext
) ;
InternetOpenUrl返回一個HINTERNET,它被傳遞給在這個URL(統一資源定位)上操作的函數。
InternetOpenUrl 的第一個參數hInternetSession是從InternetOpen返回的句柄。第二個參數lpszUrl是需要的資源的URL。下面兩個參數 lpszHeaders和HeaderLength用來向服務器傳送額外的信息。使用這些參數要求具有正在使用的特定協議的知識。
DwFlag是一個可以用幾種方式修改InternetOpenUrl行為的標志,InternetOpenUrl的行為包括關閉、隱藏,使原始數據可用和用存在的連接取代開辟一個新的連接。
最后一個參數dwContext是一個 DWORD上下文值。如果有一個值已經被指定,它將被送到狀態回調函數。如果這個值是0,信息將不會被送到狀態回調函數。
3
InternetReadFile函數用來讀取文件
BOOL bRead = ::InternetReadFile(
hUrlFile, // 1 HINTERNET hFile
buffer, // 2 LPVOID lpBuffer
sizeof(buffer), // 3 DWORD dwNumberOfBytesToRead
&dwBytesRead // 4 LPDWORD lpdwNumberOfBytesRead
);
InternetReadFile接收InternetOpenUrl返回的句柄。它也對其他Win32網絡函數,例如FtpOpenFile,FopherOpenFile和HttpOpenRequest返回的句柄有影響。
剩 下的InternetReadFile的三個參數也非常的明白直接。Inbuffer是指向保留數據的緩沖區的一個無返回值指 針,dwNumberOfByteToRead以字節為單位指定緩沖區的尺寸。最后一個參數,lpdwNumberOfBytesRead是一個指向包含 讀入緩沖區字節數的變量的指針。如果返回值是TRUE,而且lpdwNumberOfBytesRead指向0,則文件已經讀到了文件的末尾。
4InternetConnet函數連接到一個HTTP,FTP或Gopher服務器:
HINTERNET hConnect = ::InternetConnect(
hSession, //1 HINTERNET hInternetSession
"www.microsoft.com", //2 LPCTSTR lpszServerName
INTERNET_INVALID_PORT_NUMBER,//3 INTERNET_PORT nServerPort
"", //4 LPCTSTR lpszUsername
"", //5 LPCTSTR lpszPassword
INTERNET_SERVICE_HTTP, //6 DWORD dwService
0, //7 DWORD dwFlags
O //8 DWORD dwContext
) ;
第六個參數dwService決定服務類型(HTTP,FTP或Gopher)。第二個參數(設置成www.microsoft.com)提供了服務器的地址。第一個參數hInternetSession是從InternetOpen返回的句柄。第四個、第五個參數提供一個用戶姓名和密碼 。這七個參數沒有控制任何標志影響HTTP操作。最后一個參數為狀態回調函數提供前后關系的信息。 5HttpOpenRequest創建一個請求句柄并且把參數存儲在句柄中。HINTERNET hHttpFile = ::HttpOpenRequest(
hConnect, // 1 HINTERNET hHttpSession
"GET", // 2 LPCTSTR lpszVerb
"/MSDN/MSDNINFO/", // 3 LPCTSTR lpszObjectName
HTTP_VERSION, // 4 LPCTSTR lpszVersion
NULL, // 5 LPCTSTR lpszReferer
0, // 6 LPCTSTR FAR * lplpszAcceptTypes
INTERNET_FLAG_DONT_CACHE, // 7 DWORD dwFlags
0 // 8 DWORD dwContext
) ;
HttpOpenRequest的第一個參數是由InternetConnet返回的HINTERNET。HttpOpenRequest的第七和第八個參數執行與InternetConnect中有相同名字的參數一樣的功能。
第 二個參數(“GET”)指定想要得到由第三個參數(“/MSDN/MSDNINFO/”)命名的對象。HTTP版已經傳遞第四個參數;現在,它肯定是 HTTP VERSION。因為“GET”是最流行的動詞類型,HttpOpenRequest將為這個參數接收一個空指針。
第五個參數lpszReferer是一個網點的地址。這個值可以為空。第六個參數執行一個程序接收的文件類型列表。把空值傳遞給HttpOpenRequest即通知了服務器只有文本文件可以被接收。
6
HttpSendRequest把請求參數送到HTTP服務器。
除了傳送請求外,HttpSendRequest允許傳送額外的HTTP標題給服務器。關于HTTP標題的信息可以在http://www.w3.org/ 上的最新的說明上找到。
BOOL bSendRequest = ::HttpSendRequest(
hHttpFile, // 1 HINTERNET hHttpRequest
NULL, // 2 LPCTSTR lpszHeaders
0, // 3 DWORD dwHeadersLength
0, // 4 LPVOID lpOptional
0