chicleee / http-server

For learning.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WebServer

用C++实现的简易WEB服务器,经过webbenchh压力测试可以实现上万的并发连接。

功能

  • 利用Epoll与线程池实现多线程的Reactor高并发模型;
  • 利用状态机解析HTTP请求报文;
  • 利用标准库容器封装char,实现自动增长的缓冲区;
  • 基于小根堆实现的定时器,关闭超时的非活动连接;
  • 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态;
  • 实现数据库连接池、用户注册登录功能。

环境要求

  • Linux
  • C++
  • MySql

目录树

.
├── code           源代码
│   ├── buffer
│   ├── config
│   ├── http
│   ├── log
│   ├── timer
│   ├── pool
│   ├── server
│   └── main.cpp
├── test           单元测试
│   ├── Makefile
│   └── test.cpp
├── resources      静态资源
│   ├── index.html
│   ├── image
│   ├── video
│   ├── js
│   └── css
├── bin            可执行文件
│   └── server
├── log            日志文件
├── webbench-1.5   压力测试
├── build          
│   └── Makefile
├── Makefile
├── LICENSE
└── readme.md

项目启动

需要先配置好对应的数据库

// 建立yourdb库
create database yourdb;

// 创建user表
USE yourdb;
CREATE TABLE user(
    username char(50) NULL,
    password char(50) NULL
)ENGINE=InnoDB;

// 添加数据
INSERT INTO user(username, password) VALUES('name', 'password');
make
./bin/server

压力测试

./webbench-1.5/webbench -c 10000 -t 10 http://ip:port/

About

For learning.

License:Apache License 2.0


Languages

Language:C++ 47.3%Language:HTML 27.5%Language:CSS 12.7%Language:C 9.5%Language:JavaScript 1.6%Language:Makefile 1.4%