web 服务器功能模块设计
来源:互联网 发布:淘宝会员名叫什么好呢 编辑:程序博客网 时间:2024/05/21 09:49
正好这段时间多,公司没啥项目.做一个httpserver服务器玩玩,平时多练练,在项目中开发时才能更加的顺手.
每个程序员都应该尝试下写博客
http://droidyue.com/blog/2017/01/02/why-every-programmer-should-try-to-write-blogs/
目前开源的web服务器主要有:
https://h2o.examp1e.net/
http请求库libCURL
我推荐一个比较小众的:
http://iunknown.iteye.com/blog/59804
1.先看完libevent.初步理解libevent的源代码这种事件驱动的网络框架
暂时先采用C语言版来实现,后面再完善成C++版本.
webserver模块分析和设计
1.命令行解析功能
命令行参数主要有哪些?服务器侦听端口,最大客户端数量,网站的根目录,配置文件名称,连接超时时间扥等
2.配置文件解析(tinyxml库使用)
配置文件为服务器的主配置选项,相同选项,配置文件的配置将覆盖命令行的配置.
3.日志库
使用glog库,分等级将日志输出.
4.多客户端支持(网络传输层,负责接收连接,数据接收,数据发送)
连接的处理,请求数据的接收,响应数据的发送,客户端请求到来的时候,主线程查看线程池中是否有空闲的工作线程,
有:分配任务,没有:创建新的线程.此处采用libevent框架来实现.减少多余的网络问题.
5.http头部分析
5.1解析http method,如GET,POST,HEAD等等
5.2 解析http的版本
5.3 解析URI,即请求资源的地址.
6.http URI的分析设计
请求主机的位置以’/’开始,资源位置的最后一个’/’后的字符串为实际请求的文件名.需要根据文件名来判断请求资源的类型,对于一个以”%”开头的字符,需要进行转换后使用真正的值,其后面的两个字符拼成一个字符.
7.http支持方法的分析设计
暂时仅支持GET方法,服务器对应GET方法的处理逻辑分为:
头部信息的组织(http response响应的头部信息)
文件内容的发送
8.http支持CGI的分析设计(查阅http CGI的资料和使用方法)
9.http错误处理的分析设计
9.1用户的请求发生错误
9.2服务器端发生错误
9.3网络传输过程中发生错误时
类设计
多客户端并发支持->网络类,libevent构造网络框架
- web 服务器功能模块设计
- Nginx服务器的功能模块
- 购物车功能模块设计
- 自定义功能模块设计
- 游戏服务器 - 浅谈 功能模块 1
- 游戏服务器 - 浅谈 功能模块 2
- 游戏服务器 - 浅谈 功能模块 3
- 游戏服务器 - 浅谈 功能模块 1
- 游戏服务器 - 浅谈 功能模块 3
- 高性能Web服务器设计
- 功能模块
- 游戏服务器 - 浅谈 功能模块 2
- 浅谈游戏服务器---功能模块上来看
- 浅谈游戏服务器---功能模块上来看
- 浅谈游戏服务器---功能模块上来看
- WEB开发角度之功能模块--编辑器
- 一个关于进度管理的功能模块设计
- 机房收费系统--系统功能模块设计
- [学习笔记] bootstrap(五) : 输入框组和简单导航元素
- Linux 服务器安全运维
- FFmpeg 3.0 版发布
- stm32 数据类型的定义(常用的U8,U16,U32到底代表什么)
- Android性能优化编码规范
- web 服务器功能模块设计
- [Qt配置指南—5]Qt 5.4.2 Configure Options---Qt for Embeded Linux嵌入式Linux
- 【数据库SQL】游标使用案例
- Hadoop机架感知原理
- jquery如何清空<input type="file"/>的内容
- Android动画共享元素(例列表图片放大到详情图片动画)
- ASP.Net 在Update Panel局部刷新后 重新绑定JS方法
- linux 主设备号为1 以及/dev/null的介绍
- GitLab使用总结