Skip to content

LynnTh/WebServer

Repository files navigation

Welcome to WebServer 👋

一款C++轻量型Web服务器

Introduction

本项目是基于C++11开发的Web服务器。本项目支持http协议,解析了get、head请求,仅支持静态网页,支持http长连接;本项目还实现了异步日志,记录服务器程序的运行过程。

Section Ⅰ Section Ⅱ Section Ⅲ
模型解析 技术点解析 测试结果

Environment

  • 运行环境:Ubuntu 16.04
  • 编译:gcc 7.4.0

Install

./build.sh

Usage

./webserver [-t thread_numbers] [-p port]

Technique Point

  • 采用Reactor + 非阻塞IO + 线程池的并发模型
  • 采用Round Robin法分配新连接,实现线程间负载均衡
  • 采用eventfd实现线程的异步唤醒
  • 采用timerfd和最小堆实现计时器,并利用timing wheel法踢掉空闲连接
  • 采用双缓冲技术实现了简单的异步日志线程
  • 利用智能指针和RAII方法解决内存泄漏问题
  • 解析HTTP请求,支持MIME,支持长连接
  • 优雅关闭连接
  • 利用空闲文件描述符,限制并发连接数

Author

👤 Lynn Tao

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages