admin管理员组

文章数量:1537853

2024年5月18日发(作者:)

如何写一个web服务器

你知道如何写一个web服务器吗?下面和店铺一起来学习一下如何写一个web服务

器,主要实现一个脚本启动即可当web服务器使用。

自己动手写web服务器的方法

首先要有个处理网络异步io的模块

这一步相信大部分做后台开发的程序员都做过,模式大同小异,处理流程如下

第二步: 支持多平台

第一步中的 epoll_fd用一个跨平台的事件通知类ev_fd代替

Linux unix可使用epoll,win使用Select,freebsd使用kqueue

这里拿epoll举例 类提供poll、register、unregi、modify函数

事件类型统一为EV_DIS、EV_IN、EV_OUT

第三步:http分包

对第一步中的3,tcp收到包后,由于是粘包的,需要进行http分包

服务器可以不考虑chunk模式,根据content-lenth来进行分包即可

第四步: http解析

拆分出一个完整的http包后接着就要解析这个http

这里其实可以使用python原生http解析类,不过为了以后扩展语言,自己再封装而

且速度比原生快

对于k=v&k2=v2类似的内容通过&、=号分割解析

对multipart格式的带文件form内容用boundary分割解析

解析后存放到:

headers: 头部 (字典)

form: post参数,包括form表单 (字典)

getdic: url参数 (字典)

filedic: form表单中文件 (字典)

rfile: 原始http content内容 (字符串)

action: url/最后一个单词

command: (get or post or put or delete)

本文标签: 内容使用解析服务器事件