Linux下常用的C/C++開源Socket庫
1. Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html
2. ACE: http://www.cs.wustl.edu/~schmidt/ACE.html
ACE采用ACE_OS適配層屏蔽各種不同的、復雜繁瑣的操作系統API。
ACE是一個大型的中間件產品,代碼20萬行左右,過於宏大,一堆的設計模式,架構了一層又一層。它龐大、復雜,適合大型項目。開源、免費,不依賴第三方庫。使用的時候,要根據情況,看你從哪一層來進行使用。支持跨平臺。
ACE超重量級的網絡通信開發框架。ACE自適配通信環境(AdaptiveCommunication Environment)是可以自由使用、開放源代碼的面向對象框架,在其中實現了許多用於並發通信軟件的核心模式。ACE提供了一組豐富的可復用C++包裝外觀(Wrapper Facade)和框架組件,可跨越多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分布式服務動態(重)配置、並發執行和同步,等等
3. C++ Sockets Library: http://www.alhem.net/Sockets/index.html
它是一個跨平臺的Sockets庫,實現包括TCP、UDP、ICMP、SCTP協議。已實現的應用協議包括有SMTP、HTTP(S)、Ajp。具有SOCKS客戶端實現以及匿名DNS,支持HTTP的GET/POST/PUT以及WebServer的框架。
它封裝了sockets C API的C++類庫。支持SSL, IPv6, tcp和udp sockets, sctp sockets, http協議, 高度可定制的錯誤處理。
4. Asio C++ Library
它是一個基於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的客戶/服務器程序更加容易。
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等;其本身還包含一個HTTP服務器,提供XML的解析和SQL數據庫的訪問接口。POCO庫的模塊化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由於C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,越來越流行。
10. libcurl: http://curl.haxx.se/libcurl/
libcurl是免費的輕量級的客戶端網絡庫,支持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, 用戶名與密碼認證。
如果你開發的是客戶端,libcurl是一個不錯的選擇。
11. libiop: http://sourceforge.net/projects/libiop/
一個c語言開發的跨平臺網絡IO庫。
功能特性:c/c++api, 底層支持epoll, select,poll等io模型;異步事件模型;任務池模型,跨平臺線程接口;跨平臺(Linux/windows);日誌服務;穩定,支持7*24小時無間斷運行,自動處理異常狀態;高並發與快速響應;API簡潔,學習成本底。
註:以上內容整理自網絡!
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
Linux下常用的C/C++開源Socket庫