动手篇--web服务器

1 篇文章 0 订阅
1 篇文章 0 订阅

          经过了一些时间构思,我准备动手了开始写了,


          首先要先来一个服务器,不能妄想所有项目都运行在应用服务器上,所以我只能自己实现一个,他有些基本条件,他不能太大,这样徒劳增加包的大小,并且也没这个必要,他只要能上传文件和数据即可,并且也没有大承载量需求.所以我简单选择了阻塞式socket,通过他模拟一个HTTP服务器.他只要能接受post和get模式提交的数据,并能返回数据既可.


          这个很容易,复习了一下HTTP一些基本知识,如下:


          HTTP协议无论是请求报文(request message)还是回应报文(response message)都分为四部分:


          * 报文头 (initial line )


          * 0个或多个header line


          * 空行(作为header lines的结束)


          * 可选body


          HTTP协议是基于行的协议,每一行以\r\n作为分隔符。报文头通常表明报文的类型(例如请求类型),报文头只占一行;               


          header line附带一些特殊信息,每一个header line占一行,其格式为name:value,即以分号作为分隔;空行也就是一个\r\n;


          可选body通常包含数据,例如服务器返回的某个静态HTML文件的内容。


          就按照这个基本协议,我写一个HttpServer用来开启服务,HttpServerThread用来处理每个请求.为了减少页面加载产生的磁盘I/O,其实页面也比较少,我缓存了这个唯一的web页面,并将其放在高速缓存中,每次有请求时,复制这块内存,直接反馈回去,提高响应速度.


     然后从表头提取信息,整理,提交到对应的处理口中进行处理,具体的处理过程,我会在以后的篇章中再说明.


     接下来还有一个比较重要模块,就是反馈,我不想让大家每次请求之后,都伴随页面刷新,但是ajax对应付post请求并不是那么顺畅,于是我使用了一个隐藏的iframe,然后再反馈一个提示框到这个iframe中,用来不刷新给出反馈.



---------------------

     最近的这个测试发现方案有些问题,我正在想办法解决,问题在编译代码时,如果出错了,因为提示框的宽度有限,所以错误信息的位置展现不准确,会因为提示框的位置而变化.



     这里我要感谢一下我的同事-- roseey,感谢她帮我测试,并修改这个开源模块.






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值