Skip to content

akerdi/tinywebserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyWebServer

这是一篇针对qinguoyi/TinyWebServer 的学习文章。

TinyWebServer 以基于socket + epoll 等基础api构建最基础的服务为目标。最终实现如使用Nodejs的http 构建监听端口并接收接口信息,发送页面。其中实现方式都是最简化方案。以商用、生产环境为目的上线,则需要优化对应的模块实现。

如果要快速实现,推荐使用libuv,libevent等知名库,本文仅方便了解Web服务实现,了解并跟着实现其中最基础实现方式。在学习之前,提前先了解下相关api知识,请查看博主网页罗列的相关api。该博主还有与TinyWebServer 相关的博文,有兴趣可以查看。本篇文章和该博文区别在于更注重写和实现。

Environment

Platform: Windows
IDE     : VSCode
Running : WSL-ubuntu

RUN

运行本地mysql, 填写db_user, db_pass, db_name 到main.cpp中。

cp .vscode/launch.example.json .vscode/launch.json
cp .vscode/tasks.example.json .vscode/tasks.json
# 键盘F5 启动debug

Content

以下按章节循序渐进学习:

  • sem / lock / cond
  • block_queue
  • log
  • sql pool && RAII interface
  • lst_timer && utils
  • threadpool
  • webserver(constitude all logic above)
  • http logic

Ref

https://beej-zhcn.netdpi.net/

https://github.com/akerdi/sigAttachEpoll_sample

https://github.com/qinguoyi/TinyWebServer

https://zwiley.github.io/mybook/

About

学习使用socket 搭建http服务器01

Resources

License

Stars

Watchers

Forks