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)
版权声明:本文标题:如何写一个web服务器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1715990368a480491.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论