[发明专利]一种基于C语言的HTTP服务器在审
| 申请号: | 201910426800.2 | 申请日: | 2019-05-20 |
| 公开(公告)号: | CN111970316A | 公开(公告)日: | 2020-11-20 |
| 发明(设计)人: | 苏静;许天琪;梁倩;吴江红;陈少波;郝霞 | 申请(专利权)人: | 天津科技大学 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/06;G06F8/30;G06F16/955 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 300457 天津市经济技术*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 语言 http 服务器 | ||
本发明涉及运行在linux环境下的一个静态的HTTP服务器。发明主要目标是呈现给用户一个简单高效轻量级,支持非阻塞IO,支持高并发,支持多线程,支持配置文件读写的HTTP服务器。本发明以Linux操作系统为开发环境,用C语言开发,同时调用了Linux的系统API来实现。高并发是用epoll实现,非阻塞IO是用fcntl实现,当然多线程也是用Linux底层的函数的。本发明的线程池是用生产者消费者模型来实现的,当有多个请求同时过来时系统就会把请求依次放入请求队列,服务器启动时会开启多个线程,当队列有没处理的请求时线程会自动响应。本发明开发的IDE是sublime text 2,在设计与开发中的设计方案和流程都是严格按照软件开发流程进行的,括需求的分析、开发可行性的研究、总体设计的框架的实现和系统测试等。
技术领域
本发明属于技术开发领域,尤其是一种基于C语言的HTTP服务器。
背景技术
随着计算机技术的日新月异和互联网技术的发展,上网的需求对于大众也越来越强烈,网上购物,浏览新闻,网页游戏,受到大众的特别的喜爱。浏览网页的时候,网站的后台服务器就起到了关键的作用,虽然HTTP服务器在后台不被我们感知但是服务器的作用不可或缺,浏览商品,购物,这些习以为常的事件都需要服务器的支撑。打开浏览器输入网址回车后,HTTP服务器响应请求,就会把信息传给浏览器然后呈现在用户面前。比较著名的Web服务器有Apache Httpd、Nginx、IIS。这些软件运行在世界各地为大众上网提供高效的服务。我们所熟知的HTTP服务器成熟的软件是为了大众的需求,不会太考虑单一企业的特殊需求,于是本发明开发一个HTTP服务器实现这个特殊需求。
发明内容
本发明是在Linux环境下实现一个高性能的HTTP服务器,这个HTTP服务器的框架尽可能简单,在简单易懂的情况下可以实现实用性。在浏览器的地址栏输入网址,当浏览器敲回车的时候,浏览器会根据HTTP协议的规则,通过网络把信息包装陈HTTP报头发送到服务器终端,这时服务器接收到消息,服务器对浏览器发送过来的HTTP报头进行解析,得到浏览器请求需要的资源,服务器就会对自己的硬盘找是否是有浏览器需要的资源,当找到的时候,会把资源进行处理,再依据HTTP协议把浏览器所需的资源发送到浏览器。
本发明的优点和积极效果是:
本发明的HTTP服务器是以Linux操作系统为开发环境,基于C语言进行的开发,同时调用了Linux的系统API来实现。是一个简单高效轻量级,支持非阻塞IO,支持高并发,支持多线程,支持配置文件读写的HTTP服务器。
附图说明
图1是本发明的HTTP服务器的基本的架构。
图2是本发明的IO流的数据结构。
图3是本发明的句柄触发图解。
图4是本发明的HTTP模块解析请求。
图5是本发明的线程池。
具体实施方式
以下结合附图对本发明做进一步说明。
如图1所示,本发明的HTTP服务器的基本的架构分为三层,一是实现事件循环,二是HTTP服务器是非阻塞IO的,第三个是请求的任务都加入到线程池。这样能有效处理请求,也不会因为有很多的请求而使一些任务饥饿,这样性能就提升了。
IO流的封装。在传统的IO流中是不稳定的,当数据在网络中,传输的过程中,如果遇到了信号的干扰,这就会导致IO流的异常,遇到了异常后读取的数据是不保证全部读取完的,就不能保证接收到的数据是完整的。这就导致了传输的错误,所以本发明对传统的IO流进行了封装,使线程是安全的。IO流的数据结构如图2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津科技大学,未经天津科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910426800.2/2.html,转载请声明来源钻瓜专利网。





