521xueweihan / HelloGitHub

:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.
https://hellogithub.com
86.1k stars 9.45k forks source link

简单的C++网络库 #829

Closed caozhiyi closed 4 years ago

caozhiyi commented 4 years ago

项目推荐

521xueweihan commented 4 years ago

您推荐的项目已收录到专栏,后续有最新进展会在此 Issues 进行通知。 欢迎继续推荐如此优秀的项目、告诉其他小伙伴加入到 HelloGitHub 项目中。谢谢 🙏

521xueweihan commented 4 years ago

@caozhiyi 标题中去掉了“最”。

既然是简单、面向学习者的。那么介绍也可以描述的更加通俗易通,站在初学者的角度,突出这个项目可以让初学者学习到的知识和项目特点。

caozhiyi commented 4 years ago

非常感谢收录! 我修改下介绍:

CppNet是一个封装在Tcp协议上的Proactor模式multi-thread网络库,包含OS接口调用,回调处理,定时器,数据缓存,任务队列……,这里有从操作系统到应用层的所有网络细节! 简单:CppNet对外只导出了少量的调用接口,所有的网络IO都封装为异步回调的形式,且接口声明都尽可能的像是调用系统socket API,对客户端而言,只多了一个新增的buffer对象类型。 快速:分别采用epoll和IOCP做底层事件驱动,其中epoll多线程惊群通过端口复用交由Linux内核处理。参照SGI STL和Nginx实现了内存池,每个建立连接的socket都独享一个内存池对象,所有从内存池中申请的内存都由智能指针管理。 明了:CppNet结构上分为三层:事件驱动层,会话管理层,接口层,各层之间通过回调向上通知。各个模块之间职责分工明确,上帝的事儿归上帝管,凯撒的事儿归凯撒管。最大的类不超过500行代码。

再次感谢收录,望采纳。

ChungZH commented 4 years ago

非常感谢收录! 我修改下介绍:

CppNet是一个封装在Tcp协议上的Proactor模式multi-thread网络库,包含OS接口调用,回调处理,定时器,数据缓存,任务队列……,这里有从操作系统到应用层的所有网络细节! 简单:CppNet对外只导出了少量的调用接口,所有的网络IO都封装为异步回调的形式,且接口声明都尽可能的像是调用系统socket API,对客户端而言,只多了一个新增的buffer对象类型。 快速:分别采用epoll和IOCP做底层事件驱动,其中epoll多线程惊群通过端口复用交由Linux内核处理。参照SGI STL和Nginx实现了内存池,每个建立连接的socket都独享一个内存池对象,所有从内存池中申请的内存都由智能指针管理。 明了:CppNet结构上分为三层:事件驱动层,会话管理层,接口层,各层之间通过回调向上通知。各个模块之间职责分工明确,上帝的事儿归上帝管,凯撒的事儿归凯撒管。最大的类不超过500行代码。

再次感谢收录,望采纳。

太长了......精简一下吧 :joy:

caozhiyi commented 4 years ago

好,我再精简下:

CppNet是一个封装在Tcp协议上的Proactor模式multi-thread网络库,包含OS接口调用,回调处理,定时器,缓存管理,任务队列……,这里有从操作系统到应用层的所有网络细节! 简单:只导出了最少量的接口,其声明都类似系统socket API,对客户端而言,只新增了一个buffer类型。 快速:采用性能最优的epoll和IOCP做事件驱动,惊群处理交由内核。每个连接都独享一个内存池,从内存池中申请的内存都由智能指针管理。 明了:结构上分为事件驱动,会话管理,接口三层,通过回调向上通知。模块之间职责分工明确。最大的类不超过500行代码。

这次简练了蛮多。。

ChungZH commented 4 years ago

CppNet 是一个封装在 Tcp 协议上的 Proactor 模式 multi-thread 网络库,包含 OS 接口调用,回调处理,定时器,缓存管理,任务队列……,这里有从操作系统到应用层的所有网络细节!

521xueweihan commented 4 years ago

您推荐的项目,已成功发布HelloGitHub 第 43 期,并把您添加到了贡献者列表中。

欢迎继续推荐如此优秀的项目、告诉其他小伙伴加入到 HelloGitHub 项目中,没有 star 本项目的请 star 一下。谢谢 🙏