c 網路庫調研

2021-06-24 11:38:36 字數 1731 閱讀 4048

c++ 網路庫 network library tcp server

網路庫總結

開源c/c++網路庫比較

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

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

asio

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下面執行,那用這個庫也是可以的。

muduo

poco

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

比較boost.asio和ace之間關於socket程式設計的比較

資訊交換協議

基於 google protobuf 的 webgame 網路協議設計

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

參考資料

伺服器設計和開發的體會

網路頻寬方案調研

一 基礎知識 1 理論上 2m 即2mb s 寬頻理論速率是 256kb s,實際速率大約為150 240kb s 其原因是受使用者計算機效能 網路裝置質量 資源使用情況 網路高峰期 服務能力 線路衰耗,訊號衰減等多因素的影響而造成的 4m 即4mb s 的寬頻理論速率是 512kb s,實際速率大...

網路 路由生產演算法調研

一 相關名詞 1.路由 路由 名詞 資料報從源位址到目的位址所經過的路徑,由一系列路由節點組成。路由 動詞 從乙個介面上收到資料報,根據資料報的目的位址進行定向並 到另乙個介面的過程。2.路由節點 個具有路由能 的主機或路由器,它維護 張路由表,通過查詢路由表來決定向哪個介面傳送資料報。3.介面 路...

神經網路加速引擎對比調研

引擎名稱 mnntensorrt tf2ncnn paddle lite tengine mobileaibench open vino 開源機構 訓練框架 tensorflow lite caffe onnx tensorflow caffe onnx pytorch mxnet theano p...