【开源】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的代码,大家发现问题一定要反馈给我修复,谢谢。

 

欢迎跟帖讨论, 欢迎吐槽拍砖, 谢谢.

原文地址:https://www.cnblogs.com/cppisnotbad/p/3386252.html