# CppNet **Repository Path**: lumax008/CppNet ## Basic Information - **Project Name**: CppNet - **Description**: No description available - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-10 - **Last Updated**: 2024-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

cppnet logo

Build Status Licenses

查看更多细节 [wiki](https://github.com/caozhiyi/CppNet/wiki) ## 简介 Cppnet是一个封装在TCP协议上的proactor模式multi-thread C++11网络库,支持在windows,linux以及macOS上编译使用。 - `简单`: + 对外暴漏最少接口,所有的网络响应都封装为异步回调的形式 + 接口声明类似系统原生 + 只新增一个buffer接口集 + 支持IPv6和IPv4 - `快速`: + 分别采用epoll,[wepoll](https://github.com/piscisaureus/wepoll),kqueue做底层事件驱动 + 多线程惊群交由内核处理 + 参照SGI STL和Nginx实现了内存池,每个连接都独享一个内存池对象,所有从内存池中申请的内存都由智能指针管理 + 用时间轮实现定时器 - `明了`: + 结构上分为三层:事件驱动层,会话管理层,接口层,各层之间通过回调向上通知 + 各个模块之间职责分工明确,上帝的事儿归上帝管,凯撒的事儿归凯撒管 + 通过接口解耦模块,符合最小接口原则和依赖倒置原则 ## 快速开始 快速使用`cppnet`,以及使用注意事项,请看[快速开始](doc/start/quick_start_cn.md)。 ## 接口 `cppnet`对外接口主要包括三种类型,也分别定义在三个头文件中: - 初始化和全局配置类,定义在[cppnet](/include/cppnet.h) - `socket`操作类,[cppnet_socket](/include/cppnet_socket.h) - `buffer`读取类,定义在[cppnet_buffer](/include/cppnet_buffer.h) 接口详情请参考[API](/doc/api/api_cn.md)。 ## 示例 所有示例都在 [test](/test) 目录下: - [simple](/test/simple): 一个简单的使用示例。 - [echo](/test/echo): 实现了200连接量的echo的测试程序。 - [http](/test/http): 参照muduo实现了一个简单的http服务器。 - [sendfile](/test/sendfile): 文件发送和接收示例。 - [pingpong](/test/pingpong): pingpong测试程序。 - [rpc](/test/rpc): 简单的rpc示例。 - [multi_port](/test/multi_port): 多监听端口示例。 ## 效率 目前用Apache `ab` 对[test](/test)目录中的`http`测试服务做了压测,并与`muduo`做了对比。 详情请看[ab压测](/doc/efficiency/apache_ab_bench_cn.md)。 ## 编译 请看[编译](/doc/build/build_cn.md) ## Q&A 1. 为什么在windows上不使用IOCP? 请看文章[cppnet网络库](/doc/introduction/cppnet.md)最后一节。 ## 协议 CppNet使用BSD 3-Clause使用条款,详情请看[BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause)。