【開源】C++異步網絡框架,希望對感興趣的同學帶來一些啟發。



發布一個源創的linux C++異步網絡框架, 基於工作需求,偏重工程實踐。

開發者不需關心 連接,監聽,以及底層I/O,只需關注業務自身,這是網絡框架的目標。

 

內置的喚醒接口可以輕松將框架擴展至多線程工作模式:https://code.csdn.net/qq120848369/ez_poll

 

 

項目介紹


這是C++實現的一個異步網絡開發庫, 只能夠在linux系統下工作.
開發的初衷是維護一個自實現的, 滿足工作需求, 符合工程實踐的網絡開發庫, 可以快速安全的開發業務代碼.


功能摘要

1.基於epoll作為底層實現,做了fd層以及socket層兩級封裝,通用性與便捷性並存.

2.在socket層為使用者屏蔽了網絡I/O(read/write), 異步連接(connect), 監聽連接(listen,accept)等底層調用, 只需關心數據處理(on_message), 連接錯誤(on_error), 連接關閉(on_close), 以及發送數據(send_message).

3.內置了wakeup接口, 用於喚醒處於掛起狀態的poll(epoll_wait)調用, 可以輕松將網絡程序擴展至多線程工作模式(one event per thread).

4.對用戶負擔極小的接口設計與內存管理, 基於面向對象的框架設計符合工程實踐, 實現server與client僅需極少的代碼.

5.內置多線程支持, 充分發揮單進程性能極限, 使用方法足夠簡單.

 

 

對於這類工作中常用的庫,比如網絡庫,日志庫,配置庫,我不喜歡用開源代碼,我更喜歡自己實現一份,根據需求慢慢的優化和擴展,作為隨身攜帶的戰斗武器,走到哪里都能掏出來用。

網絡庫我也發過幾個,但對代碼的設計實現一直不是很滿意,主要源於接口的一致性不高,工程實踐性不強。 所以,我也思考了很多設計方法,現在這份代碼我感覺至少能夠讓我滿意。

 

項目內有sample可以參考,例子的設計風格參考了我們部門常見的C++設計風格,實踐性比較強。

 

有興趣同學可以圍觀一下,暫時sample的測試沒有什么內存和功能問題。

后續我會持續維護這個庫,用在一些復雜的網絡項目里。 沒有不含BUG的代碼,大家發現問題一定要反饋給我修復,謝謝。

 

歡迎跟帖討論, 歡迎吐槽拍磚, 謝謝.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM