C++ 第三方常用网络库
?
From:https://www.cnblogs.com/aitantianderuangutou/p/11416902.html
?
(1) ACE
龐大、復(fù)雜,適合大型項(xiàng)目。開(kāi)源、免費(fèi),不依賴第三方庫(kù),支持跨平臺(tái)。
http://www.cs.wustl.edu/~schmidt/ACE.html
?
(2) Asio
Asio基于Boost開(kāi)發(fā)的異步IO庫(kù),封裝了Socket,簡(jiǎn)化基于socket程序的開(kāi)發(fā)。
開(kāi)源、免費(fèi),支持跨平臺(tái)。
http://think-async.com/
?
(3) POCO
POCO C++ Libraries 提供一套 C++ 的類庫(kù)用以開(kāi)發(fā)基于網(wǎng)絡(luò)的可移植的應(yīng)用程序,功能涉及線程、線程同步、文件系統(tǒng)訪問(wèn)、流操作、共享庫(kù)和類加載、套接字以及網(wǎng)絡(luò)協(xié)議包括:HTTP、 FTP、SMTP 等;其本身還包含一個(gè) HTTP 服務(wù)器,提供 XML 的解析和 SQL?數(shù)據(jù)庫(kù)的訪問(wèn)接口。POCO庫(kù)的模塊化、高效的設(shè)計(jì)及實(shí)現(xiàn)使得POCO特別適合嵌入式開(kāi)發(fā)。在嵌入式開(kāi)發(fā)領(lǐng)域,由于C++既適合底層(設(shè)備I/O、中斷處理等)和高層面向?qū)ο箝_(kāi)發(fā),越來(lái)越流行。
http://pocoproject.org/
?
(4) libevent
Libevent是一個(gè)輕量級(jí)的開(kāi)源高性能網(wǎng)絡(luò)庫(kù),從它的官網(wǎng)標(biāo)題:libevent-an event notification library就能知道它的機(jī)制是采用事件觸發(fā),封裝了以下三種事件的響應(yīng):IO事件,定時(shí)器事件,信號(hào)事件。select模型來(lái)實(shí)現(xiàn)跨平臺(tái)的操作,Windows環(huán)境下支持IOCP。Google的開(kāi)源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見(jiàn)該庫(kù)的質(zhì)量。
http://libevent.org/
?
(5) libev
libev和libevent很像,按照作者的介紹,可以作為libevent的替代者,能夠提供更高的性能。
libev是一個(gè)高性能事件循環(huán),所實(shí)現(xiàn)的功能就是一個(gè)強(qiáng)大的reactor。
http://software.schmorp.de/pkg/libev.html
?
(6)?C++ sockets library
封裝了sockets C API的C++類庫(kù)。
支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協(xié)議, 高度可定制的錯(cuò)誤處理。
http://www.alhem.net/Sockets/
?
(7) libcurl
libcurl是免費(fèi)的輕量級(jí)的客戶端網(wǎng)絡(luò)庫(kù),支持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, 用戶名與密碼認(rèn)證。
如果你開(kāi)發(fā)的是客戶端,libcurl是一個(gè)不錯(cuò)的選擇。
http://curl.haxx.se/libcurl/
?
?
?
看了之后覺(jué)得每個(gè)庫(kù)都不錯(cuò),這里我具體下載這些庫(kù)看一下,簡(jiǎn)單總結(jié)一下;
順便添加一些我找到的網(wǎng)絡(luò)庫(kù);
?
(1) ACE
龐大、復(fù)雜,適合大型項(xiàng)目。開(kāi)源、免費(fèi),不依賴第三方庫(kù),支持跨平臺(tái)。
http://www.cs.wustl.edu/~schmidt/ACE.html
注:除非特別需要,否則不建議;
?
(2) Asio
Asio基于Boost開(kāi)發(fā)的異步IO庫(kù),封裝了Socket,簡(jiǎn)化基于socket程序的開(kāi)發(fā)。
開(kāi)源、免費(fèi),支持跨平臺(tái)。
http://think-async.com/
?注:要配置Boost庫(kù),還要熟悉Boost,還是麻煩;
?
(3) POCO
POCO C++ Libraries 提供一套 C++ 的類庫(kù)用以開(kāi)發(fā)基于網(wǎng)絡(luò)的可移植的應(yīng)用程序,功能涉及線程、線程同步、文件系統(tǒng)訪問(wèn)、流操作、共享庫(kù)和類加載、套接字以及網(wǎng)絡(luò)協(xié)議包括:HTTP、 FTP、SMTP 等;其本身還包含一個(gè) HTTP 服務(wù)器,提供 XML 的解析和 SQL 數(shù)據(jù)庫(kù)的訪問(wèn)接口。POCO庫(kù)的模塊化、高效的設(shè)計(jì)及實(shí)現(xiàn)使得POCO特別適合嵌入式開(kāi)發(fā)。在嵌入式開(kāi)發(fā)領(lǐng)域,由于C++既適合底層(設(shè)備I/O、中斷處理等)和高層面向?qū)ο箝_(kāi)發(fā),越來(lái)越流行。
http://pocoproject.org/
注:沒(méi)用過(guò),看上面提示為 適合 嵌入式 開(kāi)發(fā);
?
(4) libevent
Libevent是一個(gè)輕量級(jí)的開(kāi)源高性能網(wǎng)絡(luò)庫(kù),從它的官網(wǎng)標(biāo)題:libevent-an event notification library就能知道它的機(jī)制是采用事件觸發(fā),封裝了以下三種事件的響應(yīng):IO事件,定時(shí)器事件,信號(hào)事件。select模型來(lái)實(shí)現(xiàn)跨平臺(tái)的操作,Windows環(huán)境下支持IOCP。Google的開(kāi)源WEB瀏覽器Chromium在Mac和Linux版本中,也使用了Libevent,足見(jiàn)該庫(kù)的質(zhì)量。
http://libevent.org/
注:看了倒是不錯(cuò),還是有點(diǎn)麻煩;
?
(5) libev
libev和libevent很像,按照作者的介紹,可以作為libevent的替代者,能夠提供更高的性能。
libev是一個(gè)高性能事件循環(huán),所實(shí)現(xiàn)的功能就是一個(gè)強(qiáng)大的reactor。
http://software.schmorp.de/pkg/libev.html
注:沒(méi)看;
?
(6) C++ sockets library
封裝了sockets C API的C++類庫(kù)。
支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http協(xié)議, 高度可定制的錯(cuò)誤處理。
http://www.alhem.net/Sockets/
注:看著功能不錯(cuò),編譯,應(yīng)用還是有點(diǎn)麻煩;
?
(7) libcurl
libcurl是免費(fèi)的輕量級(jí)的客戶端網(wǎng)絡(luò)庫(kù),支持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, 用戶名與密碼認(rèn)證。
如果你開(kāi)發(fā)的是客戶端,libcurl是一個(gè)不錯(cuò)的選擇。
http://curl.haxx.se/libcurl/
注:沒(méi)看,放到這里,以后編寫(xiě)網(wǎng)絡(luò)客戶端的時(shí)候看看;
?
(8):C++ Socket Class for Windows ,http://www.adp-gmbh.ch/win/misc/sockets.html;
?注:這個(gè)文章的文件不可以下載自己復(fù)制 保存?h 和 cpp文件;
??????? 我用了一下,覺(jué)得很不錯(cuò),也很簡(jiǎn)單,例子很明了;?不過(guò)有一個(gè)小小的缺點(diǎn),只收發(fā)字符串,而且接收函數(shù)中的判斷也有點(diǎn)不好;
?????? 如果要用這個(gè)庫(kù)傳輸文件等數(shù)據(jù),需要?自己重載 收發(fā)函數(shù),不過(guò)也很簡(jiǎn)單;
?????? 這個(gè)不錯(cuò),我會(huì)單獨(dú)寫(xiě)一篇文章介紹;
?
(9):SimpleSockets,http://sockets.carrierlabs.com/index.html
???????????????????????????????? 跨平臺(tái),支持 TCP ,UDP;
注:這個(gè)編譯簡(jiǎn)單而且用起來(lái)也簡(jiǎn)單,目前考慮這個(gè)庫(kù);
http://blog.csdn.net/weiwangchao_/article/details/8730199
?
?
?
總結(jié)
以上是生活随笔為你收集整理的C++ 第三方常用网络库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PyQt5 快速开发 与 实战
- 下一篇: VS2019 使用 C/C++ 动态链接