在C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設計庫來擴充功能要好過設計更多的語法的言論。現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重量級的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維傑作。由於庫的數量非常龐大,而且限於筆者水平,其中很多並不瞭解。所以文中所提的一些庫都是比較著名的大型庫。
C++各大有名庫的介紹——網絡通信
1、ACE
參考網站:http://www.cs.wustl.edu/~schmidt/ACE.html
C++庫的代表,超重量級的網絡通信開發框架。ACE自適配通信環境(Adaptive Communication Environment)是可以自由使用、開放源代碼的面向對象框架,在其中實現了許多用於併發通信軟件的核心模式。ACE提供了一組豐富的可複用C++包裝外觀(Wrapper Facade)和框架組件,可跨越多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步,等等。
2、ICE
參考網站:http://www.zeroc.com/index.html
ICE是ZeroC公司開發的一款高效的開源中間件平臺,全稱是Internet Communications Engine。
它的主要設計目標是:
• 提供適用於異種環境的面向對象中間件平臺。
• 提供一組完整的特性,支持廣泛的領域中的實際的分佈式應用的開發。
• 避免不必要的複雜性,使平臺更易於學習和使用。
• 提供一種在網絡帶寬、內存使用和 CPU 開銷方面都很高效的實現。
• 提供一種具有內建安全性的實現,使它適用於不安全的公共網絡。
ICE支持多種編程語言:C++、Java、C#、VB、Python、Ruby,也就是說使用ICE時我們可以讓這些語言無縫溝通,不過由於ICE是用C++編寫的,不管用什麼語言,你都需要先用C++編譯出一個ICE才行(或者下載已編譯的版本)。
本篇文章以C++語言作爲演示語言,其它語言除語法不同外,使用方法非常類似。
3、StreamModule
參考網站:http://www.omnifarious.org/StrMod
設計用於簡化編寫分佈式程序的庫。嘗試着使得編寫處理異步行爲的程序更容易,而不是用同步的外殼包起異步的本質。
4、SimpleSocket
參考網站:http://home.hetnet.nl/~lcbokkers/simsock.htm
這個類庫讓編寫基於socket的客戶/服務器程序更加容易。
5、A Stream Socket API for C++
參考網站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html
又一個對Socket的封裝庫。