WinInet, WinHttp, Winsock, ws2_32的基本解釋
字體大小: 小 中 大
作者: admin | 分類: 雜七雜八 | 瀏覽: 107 | 評論: 暫時沒有評論
在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也可以同時使用。