搜尋關鍵詞
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