1. 程式人生 > >C++第三方常用網路庫

C++第三方常用網路庫

(1)ACE

龐大、複雜,適合大型專案。開源、免費,不依賴第三方庫,支援跨平臺。

(2)Asio

Asio基於Boost開發的非同步IO庫,封裝了Socket,簡化基於socket程式的開發。

開源、免費,支援跨平臺。

(3)POCO

POCO C++ Libraries 提供一套 C++ 的類庫用以開發基於網路的可移植的應用程式,功能涉及執行緒、執行緒同步、檔案系統訪問、流操作、共享庫和類載入、套接字以及網路協議包括:HTTP、 FTP、SMTP 等;其本身還包含一個 HTTP 伺服器,提供 XML 的解析和 SQL 資料庫的訪問介面。POCO庫的模組化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由於C++既適合底層(裝置I/O、中斷處理等)和高層面向物件開發,越來越流行。

(4)libevent

Libevent是一個輕量級的開源高效能網路庫,從它的官網標題:libevent-an event notification library就能知道它的機制是採用事件觸發,封裝了以下三種事件的響應:IO事件,定時器事件,訊號事件。select模型來實現跨平臺的操作,Windows環境下支援IOCP。Google的開源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見該庫的質量。

(5)libev

libev和libevent很像,按照作者的介紹,可以作為libevent的替代者,能夠提供更高的效能。

libev是一個高效能事件迴圈,所實現的功能就是一個強大的reactor。

(6)c++ sockets library

封裝了sockets C API的C++類庫。

支援SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協議, 高度可定製的錯誤處理。

(7)libcurl

libcurl是免費的輕量級的客戶端網路庫,支援DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支援SSL, HTTP POST, HTTP PUT, FTP上傳, HTTP form上傳,代理,cookies, 使用者名稱與密碼認證。

如果你開發的是客戶端,libcurl是一個不錯的選擇。

看了之後覺得每個庫都不錯,這裡我具體下載這些庫看一下,簡單總結一下;

順便新增一些我找到的網路庫;

(1)ACE

龐大、複雜,適合大型專案。開源、免費,不依賴第三方庫,支援跨平臺。

注:除非特別需要,否則不建議;

(2)Asio

Asio基於Boost開發的非同步IO庫,封裝了Socket,簡化基於socket程式的開發。

開源、免費,支援跨平臺。

 注:要配置Boost庫,還要熟悉Boost,還是麻煩;

(3)POCO

POCO C++ Libraries 提供一套 C++ 的類庫用以開發基於網路的可移植的應用程式,功能涉及執行緒、執行緒同步、檔案系統訪問、流操作、共享庫和類載入、套接字以及網路協議包括:HTTP、 FTP、SMTP 等;其本身還包含一個 HTTP 伺服器,提供 XML 的解析和 SQL 資料庫的訪問介面。POCO庫的模組化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由於C++既適合底層(裝置I/O、中斷處理等)和高層面向物件開發,越來越流行。

注:沒用過,看上面提示為 適合 嵌入式 開發;

(4)libevent

Libevent是一個輕量級的開源高效能網路庫,從它的官網標題:libevent-an event notification library就能知道它的機制是採用事件觸發,封裝了以下三種事件的響應:IO事件,定時器事件,訊號事件。select模型來實現跨平臺的操作,Windows環境下支援IOCP。Google的開源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見該庫的質量。

注:看了倒是不錯,還是有點麻煩;

(5)libev

libev和libevent很像,按照作者的介紹,可以作為libevent的替代者,能夠提供更高的效能。

libev是一個高效能事件迴圈,所實現的功能就是一個強大的reactor。

注:沒看;

(6)c++ sockets library

封裝了sockets C API的C++類庫。

支援SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協議, 高度可定製的錯誤處理。

注:看著功能不錯,編譯,應用還是有點麻煩;

(7)libcurl

libcurl是免費的輕量級的客戶端網路庫,支援DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支援SSL, HTTP POST, HTTP PUT, FTP上傳, HTTP form上傳,代理,cookies, 使用者名稱與密碼認證。

如果你開發的是客戶端,libcurl是一個不錯的選擇。

注:沒看,放到這裡,以後編寫網路客戶端的時候看看;

 注:這個文章的檔案不可以下載自己複製 儲存 h 和 cpp檔案;

        我用了一下,覺得很不錯,也很簡單,例子很明瞭; 不過有一個小小的缺點,只收發字串,而且接收函式中的判斷也有點不好;

       如果要用這個庫傳輸檔案等資料,需要 自己過載 收發函式,不過也很簡單;

       這個不錯,我會單獨寫一篇文章介紹;

                                 跨平臺,支援 TCP ,UDP;

注:這個編譯簡單而且用起來也簡單,目前考慮這個庫;

http://blog.csdn.net/weiwangchao_/article/details/8730199