HTTP Web服务器研究之三 打造一款轻量级web服务器

从前面的两个研究专题中我们了解到,web请求简单来讲就是web客户端(如浏览器)向服务器发送一个http(s)请求,请求里面包含了参数,在url中或者在字节流中,然后服务器解析出请求参数,返回数据给客户端,然后客户端做响应的处理。这就完成了一个完整的http请求。下面我们着手去打造一款http请求服务器。

  1. 开始之前,我们先去了解一下HttpListener和HttpListenerContext这两个类,简单来说HttpListenert的功能就是监听服务器上的空闲端口,等待服务端的请求,当有连接请求时,HttpListenert的GetContext()方法就会返回一个HttpListenerContext实例,这个实例就把http请求包的对象化实例。
  2. 我们然后新建一个类SapiService,因为要绑定到服务的ip和空闲端口,所以我们给他定义两个字段_ipAddress,和_port。
  3. 给服务定义初始化方法,绑定ip和端口,然后启动监听
  4. 然后是服务运行方法,这里使用了线程池方法,没当接收一个客户端请求,就从线程池里面分配一个线程去处理请求
  5. ConcreteProcess中就是请求的真正处理方法
  6. 源码地址:https://github.com/390493386/SAPIServer.git 欢迎拍砖
  7. 微信公众号weipingtai_dev:

MyWebServer v3.1.29更新日志: 增加实时流量查看,完善NT服务功能,增加静默启动(加/s命令行启动时不显示主窗口),优化一些网络参数 MyWebServer是一个高性能、易用、小巧、绿色的轻量级WEB服务器软件,是你快速建站及个人HTTP文件服务器的难得工具。支持HTTP/1.1、断点续传、大文件下载、正则表达式URL重、虚拟目录、HTTP反向代理等,可通过ISAPI接口、FastCGI接口实现执行服务器脚本(如PHP,asp,asp.net等),性能完全超越IIS等很多主流WEB服务器软件。   MyWebServer使用说明: 使用FastCGI时,在映射设置中将映射模块设置为启动FastCGI的命令,且命令行中必须包含IP:port格式(如:127.0.0.1:8988)的服务器信息,当不需要WEB服务器启动FastCGI时,命令行中填入IP:port格式的FastCGI服务器信息即可。 如果使用ISAPI接口,指定ISAPI的DLL文件即可。   注(本服务器不集成任何动态脚本支持,要使用请自行安装):asp支持可安装IASP(该软件要求安装java运行环境)通过isapi接口实现;PHP通过isapi和FastCGI接口均可(isapi方式建议使用PHP 5.2,因为5.3以上版不再提供ISAPI支持);asp.net支持可安装mono然后通过FasctCGI接口实现。上述脚本已测试过可以运行。   URL重命令(使用基于VBScript的正则表达式): ifsve  如果匹配指定的服务器变量则往下执行,否则执行下条exitr之后的规则。(目前仅支持HTTP_HOST REMOTE_ADDR HTTP_REFERER三个服务器变量) ifurl  如果匹配请求的URL则执行wrurl重命令,否则执行下条exitr之后的规则。 wrurl  执行URL重 exitr  结束url重,不再往下执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值