c++網路程式庫調研

來源:互聯網
上載者:User
搜尋關鍵詞

C++ 網路程式庫 Network Library TCP Server

網路程式庫總結

開源C/C++網路程式庫比較

http://blog.csdn.net/langeldep/article/details/6976120

在開源的C/C++網路程式庫中,常用的就那麼幾個,在業界知名度最高的,應該是ACE了,不過是個重量級的大傢伙,輕量級的有libevent, libev,還有 Boost的ASIO。

ACEhttp://www.cs.wustl.edu/~schmidt/ACE.html

ACE是一個大型的中介軟體產品,代碼20萬行左右,過於宏大,一堆的設計模式,架構了一層又一層,使用的時候,要根據情況,看你從那一層來進行使用。支援跨平台。

ASIOhttp://think-async.com/

Boost的ASIO是一個非同步IO庫,封裝了對Socket的常用操作,簡化了基於socket程式的開發。支援跨平台。

libevent

libevent是一個C語言寫的網路程式庫,官方主要支援的是類linux 作業系統,最新的版本添加了對windows的IOCP的支援。由於IOCP是非同步IO,與linux下的POLL模型,EPOLL模型,還有freebsd的KQUEUE等這些同步模型在用法上完全不一致,所以使用方法也不一樣,就好比ACE中的Reactor和Proactor模式一樣,使用起來需要轉變思路。如果對效能沒有特別的要求,那麼使用libevent中的select模型來實現跨平台的操作, select模型可以橫跨windows, linux, unix,solaris等系統。

libev

libev是一個C語言寫的,只支援linux系統的庫,我以前研究的時候只封裝了EPOLL模型,不知道現在的新版有沒有改進。使用方法類似libevent,但是非常簡潔,代碼量是最少的一個庫,也就幾千行代碼。顯然這樣的代碼跨平台肯定是無法支援的了,如果你只需要在linux下面運行,那用這個庫也是可以的。

Muduohttp://code.google.com/p/muduo/

http://blog.csdn.net/solstice/article/category/779646

http://code.google.com/p/muduo/

POCOhttp://pocoproject.org/

http://blog.csdn.net/zhangxinrun/article/details/5914100

POCO的優點:
1) 比boost更好的線程庫,特別是一個活動的方法的實現,並且還可設定線程的優先順序。
2) 比 boost:asio更全面的網路程式庫。但是boost:asio也是一個非常好的網路程式庫。
3) 包含了一些Boost所不包含的功能,像XML,資料庫介面等。
4) 跟Boost相比,整合度更高,是更加統一的一個庫。
5) Poco的c++代碼更清潔,現代和易理解。對不是模板編程專家的人來說,POCO的代碼比大多數Boost庫容易理解得多
6) 可以在許多平台上使用
POCO的缺點:
1) 文檔有限。但這一定程度上是因為代碼的容易理解。
2) 跟Boost相比使用者社群小得多。
3) 有多少能整合進C++標準是個問題。而Boost在這方面不是個問題。
許多POCO的使用者把POCO和Boost一起並用。
Boost是高品質的庫,但它不是個架構。
Boost:asio處理高並發的效率還可以。單串連吞吐稍微弱點。 如果選用,最好封裝好,別讓boost代碼吞噬你的代碼,那樣最後不可收拾。呵呵。
asio在windows下效率是最好的。基本接近自己在iocp上開發的效率。在linux下,他預設選用epoll, 但中間為了做了層stream cache, 效率稍有損失。而且他的epoll規則用的不太合理,可以自己修改他的代碼,達到自己的需求。
在freebsd下,他預設是select的,要自己修改他的代碼條件編譯,才可以支援kqueue

http://www.cppblog.com/richbirdandy/archive/2010/09/10/123994.html

比較

http://stackoverflow.com/questions/992069/ace-vs-boost-vs-poco

http://stackoverflow.com/questions/474840/boost-vs-ace-c-cross-platform-performance-comparison

Boost.Asio和ACE之間關於Socket編程的比較

http://blog.csdn.net/summerhust/article/details/6595321

資訊交換協議

基於 Google protobuf 的 webgame 網路通訊協定設計

http://www.slideshare.net/laiyonghao/google-protobuf-webgame

http://zzk.cnblogs.com/s?w=blog%3ASolstice%20protobuf%20

軟體系統開發中的資料交換協議

http://www.infoq.com/cn/news/2011/05/sl-data-exchange-protocol

參考資料

http://webservices.ctocio.com.cn/354/12203854.shtml

http://blog.csdn.net/yuyin86/article/details/6562611

伺服器設計和開發的體會

http://www.kuqin.com/system-analysis/20080614/9506.html

http://www.cplusplus.com/

http://www.oschina.net/project/tag/145/networklib?lang=0&os=0&sort=view

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.