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。具有SOCKSclient實現以及匿名DNS。支持HTTP的GET/POST/PUT以及WebServer的框架。

它封裝了sockets C API的C++類庫。支持SSL, IPv6, tcp和udp sockets, sctp sockets, http協議, 高度可定制的錯誤處理。

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簡潔,學習成本底。

注:以上內容整理自網絡!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM