linux常見類庫及簡單介紹



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: 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的客戶/服務器程序更加容易。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章