web 服务器功能模块设计

原创 2017年01月03日 13:27:43

正好这段时间多,公司没啥项目.做一个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服务器的设计与实现

socket web服务器
  • zdy_lsh
  • zdy_lsh
  • 2017年01月27日 19:48
  • 1016

python的web服务器模块

from: http://www.lifeba.org/arch/python_http_simplehttpserver_basehttpserver_cgihttpserver.html P...

基于Web的图片管理功能模块

  • 2009年05月12日 16:54
  • 1024KB
  • 下载

App架构设计与功能模块拆分

  • 2016年01月07日 08:47
  • 72KB
  • 下载

web2.0网站常用可用性功能模块分析

Web 2.0网站是指将传统的网站构架(平台、内容源、用户、传播方式等)转化到以用户为核心的网站构架上来,包括一系列体现web2.0概念的元素、定位和创 意。web2.0网站在构架上须体现两大宗旨,即...

STM32W108功能模块设计

  • 2015年07月08日 18:19
  • 499KB
  • 下载

Nginx服务器的功能模块

Nginx与Apache比较的优点对于这个问题,并不能说哪一个较好,本身他们都有优缺点,例如:Apache提供了几百个模块,模块就意味着功能,但作为一个Apache服务器最多只有2000多的并发量,N...

App架构设计与功能模块拆分

  • 2014年06月17日 10:48
  • 72KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:web 服务器功能模块设计
举报原因:
原因补充:

(最多只允许输入30个字)