1. Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.htmlhtml
2. ACE: http://www.cs.wustl.edu/~schmidt/ACE.htmlreact
ACE採用ACE_OS適配層屏蔽各類不一樣的、複雜繁瑣的操做系統API。c++
ACE是一個大型的中間件產品,代碼20萬行左右,過於宏大,一堆的設計模式,架構了一層又一層。它龐大、複雜。適合大型項目。開源、免費。不依賴第三方庫。使用的時候,要依據狀況。看你從哪一層來進行使用。支持跨平臺。數據庫
ACE超重量級的網絡通訊開發框架。ACE自適配通訊環境(AdaptiveCommunication Environment)是可以自由使用、開放源碼的面向對象框架。在當中實現了不少用於併發通訊軟件的核心模式。windows
ACE提供了一組豐富的可複用C++包裝外觀(Wrapper Facade)和框架組件,可跨越多種平臺完畢通用的通訊軟件任務,當中包含:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通訊、共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步,等等設計模式
3. C++ Sockets Library: http://www.alhem.net/Sockets/index.htmlapi
它是一個跨平臺的Sockets庫,實現包含TCP、UDP、ICMP、SCTP協議。已實現的應用協議包含有SMTP、HTTP(S)、Ajp。具備SOCKSclient實現以及匿名DNS。支持HTTP的GET/POST/PUT以及WebServer的框架。瀏覽器
它封裝了sockets C API的C++類庫。支持SSL, IPv6, tcp和udp sockets, sctp sockets, http協議, 高度可定製的錯誤處理。cookie
4. Asio C++ Library: http://think-async.com/ 網絡
它是一個基於Boost開發的異步IO庫,封裝了對Socket的常常使用操做。簡化了基於Socket程序的開發。它開源、免費、支持跨平臺。
5. libevent: http://libevent.org/
它是一個C語言寫的網絡庫,主要支持的是類Linux 操做系統,最新的版本號加入了對Windows的IOCP的支持。由於IOCP是異步IO。與Linux下的POLL模型。EPOLL模型,還有freebsd的KQUEUE等這些同步模型在用法上全然不一致。因此用法也不同,就比如ACE中的Reactor和Proactor模式同樣。使用起來需要轉變思路。
假設對性能沒有特別的要求。那麼使用libevent中的select模型來實現跨平臺的操做,select模型可以橫跨Windows,Linux,Unix。Solaris等系統。
Libevent是一個輕量級的開源高性能網絡庫,它的機制是採用事件觸發,封裝瞭如下三種事件的響應:IO事件,定時器事件,信號事件。
select模型來實現跨平臺的操做,Windows環境下支持IOCP。Google的開源WEB瀏覽器Chromium在Mac和Linux版本號中。也使用了Libevent。足見該庫的質量。
6. libev: http://software.schmorp.de/pkg/libev.html
它是一個C語言寫的。僅僅支持Linux系統的庫,曾經的時候僅僅封裝了EPOLL模型.用法類似libevent,但是很是簡潔,代碼量是最少的一個庫。也就幾千行代碼。顯然這種代碼跨平臺確定是沒法支持的了,假設你僅僅需要在Linux如下執行。那用這個庫也是可以的。
libev和libevent很是像,依照做者的介紹,可以做爲libevent的替代者。可以提供更高的性能。
libev是一個高性能事件循環,所實現的功能就是一個強大的reactor。
7. SimpleSocket: http://home.kpn.nl/lcbokkers/simsock.htm
這個類庫讓編寫基於Socket的客戶/server程序更加容易。
8. simple-socket: http://sourceforge.net/projects/simple-socket/
An easy to use C++ socket andnetwork library, mainly for UNIX systems.
9. POCO: http://pocoproject.org/
POCO C++ Libraries提供一套C++的類庫用以開發基於網絡的可移植的應用程序,功能涉及線程、線程同步、文件系統訪問、流操做、共享庫和類載入、套接字以及網絡協議包含:HTTP、FTP、SMTP等;其自己還包含一個HTTPserver。提供XML的解析和SQL數據庫的訪問接口。POCO庫的模塊化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由於C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,愈來愈流行。
10. libcurl: http://curl.haxx.se/libcurl/
libcurl是免費的輕量級的client網絡庫。支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP.支持SSL, HTTPPOST,HTTPPUT, FTP上傳, HTTP form上傳,代理,cookies, username與password認證。
假設你開發的是client。libcurl是一個不錯的選擇。
11. libiop: http://sourceforge.net/projects/libiop/
一個c語言開發的跨平臺網絡IO庫。
功能特性:c/c++api, 底層支持epoll, select,poll等io模型。異步事件模型;任務池模型,跨平臺線程接口。跨平臺(Linux/windows)。日誌服務。穩定。支持7*24小時無間斷執行。本身主動處理異常狀態;高併發與高速響應;API簡潔,學習成本底。
注:以上內容整理自網絡!