/webserver

simple cpp webserver

Primary LanguageC++

C++ Http WebServer

Introduction

使用C++11写的Http服务器,采用Reactor模式,可解析GET、HEAD请求,支持长连接(keep-alive)操作。

Requirements

  • Linux (kernel 4.4+)
  • g++ 7.5.0
  • cmake 3.10+

Usage

mkdir build && cd build
cmake ..
make all
./webserver -p port -t threadnum

Features

  • 采用Reactor模式,主线程只负责接收请求建立连接,使用线程池处理请求和执行I/O操作
  • 采用I/O多路复用EPOLL边缘触发、非阻塞I/O
  • 使用线程池处理请求,提高并发量并避免频繁创建和销毁线程开销
  • 采用STL中基于小根堆的优先级队列存储计时器,计时器用于关闭超时请求,计时器处理完事件后统一删除,实现惰性删除
  • 使用智能指针管理内存避免内存泄漏
  • 双缓存日志