Skip to content

Latest commit

 

History

History
89 lines (62 loc) · 2.59 KB

README_zh.md

File metadata and controls

89 lines (62 loc) · 2.59 KB

CGI HTTP Server

license stars issues fork platform

中文 | 英文

一个参考自tiny-httpd、使用了libevhttp-parserhashmaplog.c等第三方库进行了功能增强的CGI Web Server。它可以帮助你大致地了解Web Server的工作原理。

已实现的功能

  • HTTP请求的解析与封装
  • GET、POST请求处理
  • 支持CGI协议
  • 日志输出

使用

1.安装libev、Python3

sudo apt install -y libev-dev python3

2.将项目代码拉取到本地

git clone https://github.com/uncle-lv/cgi-http-server.git

3.进入src目录,使用make命令构建项目

make

4、运行服务器(端口号是可选参数)

./server {port}

与tiny-httpd类似,cgi http server也提供了/index.html/login.html等几个url路由供使用者测试。

CGI脚本需要有执行权限。

代码结构

src
├── hashmap.c
├── hashmap.h
├── http_parser.c
├── http_parser.h
├── http_request.c
├── http_request.h
├── log.c
├── log.h
├── Makefile
├── server
└── server.c

阅读源码请重点阅读http_request.*和server.c,其余文件皆为第三方库。

hashmap:一个C语言实现的hashmap。

http_parser:C语言实现http请求/响应解析库。

log.c:C99实现的一个简单日志库。

贡献

期待来自你的issue或pull request。

其他

也许会在后续计划中实现完整的HTTP/1.0与CGI/1.1协议。

协议

MIT

鸣谢