Skip to content

Latest commit

 

History

History
68 lines (49 loc) · 2.89 KB

README_cn.md

File metadata and controls

68 lines (49 loc) · 2.89 KB

cppnet logo

Build Status Licenses

查看更多细节 wiki

简介

Cppnet是一个封装在TCP协议上的proactor模式multi-thread C++11网络库,支持在windows,linux以及macOS上编译使用。

  • 简单

    • 对外暴漏最少接口,所有的网络响应都封装为异步回调的形式
    • 接口声明类似系统原生
    • 只新增一个buffer接口集
    • 支持IPv6和IPv4
  • 快速

    • 分别采用epoll,wepoll,kqueue做底层事件驱动
    • 多线程惊群交由内核处理
    • 参照SGI STL和Nginx实现了内存池,每个连接都独享一个内存池对象,所有从内存池中申请的内存都由智能指针管理
    • 用时间轮实现定时器
  • 明了

    • 结构上分为三层:事件驱动层,会话管理层,接口层,各层之间通过回调向上通知
    • 各个模块之间职责分工明确,上帝的事儿归上帝管,凯撒的事儿归凯撒管
    • 通过接口解耦模块,符合最小接口原则和依赖倒置原则

快速开始

快速使用cppnet,以及使用注意事项,请看快速开始

接口

cppnet对外接口主要包括三种类型,也分别定义在三个头文件中:

接口详情请参考API

示例

所有示例都在 test 目录下:

  • simple: 一个简单的使用示例。
  • echo: 实现了200连接量的echo的测试程序。
  • http: 参照muduo实现了一个简单的http服务器。
  • sendfile: 文件发送和接收示例。
  • pingpong: pingpong测试程序。
  • rpc: 简单的rpc示例。
  • multi_port: 多监听端口示例。

效率

目前用Apache abtest目录中的http测试服务做了压测,并与muduo做了对比。
详情请看ab压测

编译

请看编译

Q&A

  1. 为什么在windows上不使用IOCP?
    请看文章cppnet网络库最后一节。

协议

CppNet使用BSD 3-Clause使用条款,详情请看BSD-3-Clause