[轉]使用WinINet和WinHTTP

WinInet, WinHttp, Winsock, ws2_32的基本解釋

在Windows平臺進行網絡程序開發, 可以使用不同的庫, 但是最常用的還是微軟自己開發的庫。具體說來,有:

(1)Winsock,工作於網絡層和傳輸層的開發庫,對於編寫TCP,UDP,以及原始IP通信程序非常合適。函數原形也基本符合Unix socket標準。Windows平臺上的大多數程序,如QQ,訊雷等都基於其開發。

(2)ws2_32,是Winsock的升級版本,在兼容的基礎上增加了不符合Unix socket標準,但更適合Windows平臺的庫函數,一般以WSA*開頭。

現代的大多數Windows平臺程序也都開始依賴於此庫。

(3)WinInet,Windows Internet擴展庫,工作於應用協議層,提供了http,ftp,gopher協議的實現,爲基於以上三種協議的程序開發提供基礎平臺,需要說明的是,儘管WinInet工作於應用層,但其本身wininet.dll的實現並不依賴於winsock.dll或ws2_32.dll,而是獨立存在的。至少目前的版本是這樣。基於WinInet的應用程序最著名的例子就是IE了。

(4)WinHttp,也是工作於應用協議層,提供了http協議的實現。看起來與WinInet有重複的部分,沒錯,WinHttp就是爲了替換WinInet中的http部分的,它更加健壯穩定,而且還爲http服務器端開發提供了庫函數。如果進行現代http的開發,建議使用WinHTTP而不是WinInet。使用WinHTTP進行開發的著名例子就是Google的瀏覽器Chrome,但是Chrome2.0以後版本google放棄了winhttp而是使用了自己開發的http庫,這也是爲了使chrome實現跨平臺的重要舉措。另外,WinHttp.dll也不依賴於winsock或ws2_32,也是獨立運行的。

如果基於socket編程的話,Winows平臺與其它平臺函數基本相同,實現跨平臺比較容易。

如果基於http進行編程的話,不同平臺庫差別很大,如果不考慮跨平臺使用WinHttp,如果考慮跨平臺可以考慮使用libwww。

另外,wsock和wininet或winhttp也可以同時使用。

(該文章引自:http://www.hackpig.cn/cmd.asp?act=gettburl&id=500

發佈了15 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章