C 語言的網路庫有哪些,有沒有像Java的Netty這樣流行並廣泛使用的網路框架,為什麼?

時間 2021-05-30 00:45:35

1樓:

Netty不追求單機極限效能,而是簡化使用(包括跨平台優勢)的前提下的相對高效能,易用性是關鍵,然後通過集群化來增強。簡而言之,不追求個人勇武,要的是整體強悍。

2樓:寫程式碼的冰冰

試試 netplus,借鑑並實現了大量netty裡的概念及思想,c++11實現。

倉庫:https://

3樓:Jimsdog

360的evpp了解一下,雖然好像停止維護了,但是其內部實現的buffer是與netty自己實現的databuffer使用方式非常相似,在做分包粘包處理時非常好用。

4樓:

很多人用c++不物件導向(object),而是面向型別(type)。

而type資訊只能在編譯期處理,導致標頭檔案繁瑣,體驗不佳。

或者說,c++沒有乙個讓大家都認可的程式設計規範,每個團隊都在裁剪限制c++,制定自己的規範,而幾乎所有的規範都不希望巨集滿天飛,而恰恰include就是乙個巨集,導致引入第三方庫,必須非常慎重。

5樓:Joey Jiang

grpc asio libevent libuv

寫c++的少,然後再分到這幾個裡面,然後還有一些小眾的庫,然後像redis和nginx這種自己內部實現非同步事件庫的,然後每個使用的數量就很少了。

6樓:Mystery

我很好奇為什麼回答裡沒有人提到學術典範ACE

雖然其編碼風格和boost::asio大相徑庭(前者使用大量純虛函式實現多樣性而後者依賴於模板和多繼承),並且體積龐大,但是它是乙個非常全面的網路程式設計庫。

下面列舉一些已知的優點

ACE提供廣泛的跨平台支援無論是win 還是支援posix的linux 與unix 甚至到部分串列埠裝置

ACE 對於網路相關的內容都進行了封裝從基本容器到多執行緒多程序管理快取佇列管理記憶體管理等等

ACE對於網路併發請求的實現是多樣的 boost asio主要基於Proactor 而ACE則提供了Proactor 與Reactor兩者的封裝對於底層的API也能自由組合選擇(你可以配置需要使用的底層事件處理介面比如在某些BSD的系統上你可以選擇kqueue或者epoll作為底層介面應該要使用不同的類)

基於純虛函式的實現減少了模板差錯的困難

當然其壞處也是顯而易見的

體積過於龐大,相比起boost真的是怪胎

內部的基礎設施依賴過多,不易拆出部分單獨使用 ,基本把所有伺服器的基礎設施全寫了一次並且沒用標準庫連鍊錶都自己寫的這導致一定程度上阻礙了它的發展

純虛函式增大了開銷似乎速度比asio慢上幾分

7樓:流年

如果只是想拿來用,Libevent,asio差不多就夠了

如果想學習的話,陳碩有個開源專案muduo,拿來學習下不錯。再就是各種開源專案的網路模組,比如skynet,nginx。。

8樓:Mr.li

C++網路庫中,質量堪比甚至超過Netty的數不勝數。

只不過c++太自由了,風格太多樣化,百花齊放的情況下就沒有哪個能夠獲得一致認同。

為什麼別的語言中沒有像C語言一樣有指標?

liouperng 因為現在指令碼語言 函式式語言大行其道,不是正規化不需要,就是為了菜鳥好學。C類語言 C C 有指標,Pascal類語言 Delphi Ada 也有指標。 不胖的羊 為什麼大部分語言都不用指標呢?答案可能是這些語言把該用指標的部分都用C C 寫了,包在標準庫里。指標是大殺器,不敢...

想學 C 語言,有沒有經典的書?

半顆糖 Linux C程式設計一站式學習https c語言是一門涉及多學科的程式語言,不懂作業系統,體系結構,編譯器等很難把 C 語言學好。這本書從C語言基礎著手,緊接著講到gdb,讓你學會排查問題。在下篇講到計算機體系結構,彙編等,深入C語言本質。是本不可多得的C語言好書 千萬不要被譚浩強毒害! ...

C語言有哪些特性是C 沒有或者做不到的,並因此C 無法代替C?

望山 很多回答都跑題了,C 無法代替C是因為C 多了一些去不掉的功能 例如自動執行的一連串的析構函式,而最嚴重的是無法迴避的異常處理 在某些場合那些功能會耽誤事。而不是C 比C少了什麼。C99和之後的那些語法都不是必要的,沒有哪個軟體會因為缺少那些語法而寫不出來。 Timothy Liu C 無法代...