当前位置: 首页 > 专利查询>天津大学专利>正文

一种基于嵌入式系统的Boa服务器改进方法技术方案

技术编号:17709860 阅读:42 留言:0更新日期:2018-04-14 21:24
本发明专利技术公开了一种基于嵌入式系统的Boa服务器改进方法,该方法包括:Boa接收一次新的请求,获取当前请求的状态,并读取HTTP头部以判断该请求的类型,若判别请求为GET方法,并进行应用层相应处理;若判别请求为POST方法,则查看当前HTTP状态是否为WRITE_BODY状态,若不是,则说明POST请求的数据还在接收中,则处于READ_BODY状态;当POST请求数据接收完毕后,处于WRITE_BODY状态,判别该POST请求是否为CGI程序,若为CGI程序,则采用Boa服务器原有方法处理;若为非CGI程序,则采用非CGI程序处理方法。本发明专利技术解决了Boa服务器无法满足来自客户端的请求为POST形式,且该POST请求只需要本地服务器处理的时候,Boa服务器仍然fork出子进程来执行,从而增加内存消耗,影响系统运行的问题。

【技术实现步骤摘要】
一种基于嵌入式系统的Boa服务器改进方法
本专利技术属于信息
,具体涉及一种基于嵌入式系统的Boa服务器改进方法,特别涉及Boa服务器对HTTP请求的处理方式。
技术介绍
目前基于HTTP协议的用户浏览器已被广泛使用,用户普遍接受以浏览器为操作界面的产品。为了实现嵌入式录播系统中的数据可靠,有效和独立地传输,以及方便用户使用简单的网页浏览器对录制系统进行操作,在嵌入式系统中一般采用HTTP协议实现用户与设备的交互。Linux的Web服务器有Httpd、Apache、Thttpd、Boa等,Boa服务器相对其他几种服务器来说,响应速度更快,更安全,并且Boa所需的资源和能量损耗最少,所以非常适合作为嵌入式Web服务器。Boa服务器是一个单任务的Web服务器,当Boa服务器处理多个请求的时候,并不会fork出多个子进程对多个请求进行处理,而是依次完成来自客户的请求。也正是由于它不需要更多的系统资源处理多个请求,所以消耗的系统资源非常小。Boa在并发量较多的大型服务器应用场景的情况下,无法完成每个响应,但在嵌入式系统中,Boa服务器的效率已经足够满足要求。Boa服务器处理CGI请求的时候,会结合CGI可执行文件进行响应。因此从Boa的运行特点与嵌入式的系统资源进行分析,Boa服务器应用在嵌入式设备上,具备较大的优势。通过对Boa源码的分析发现,Boa对POST请求的处理方法采用的是CGI程序处理。采用CGI程序处理的应用中,请求的URL必须指定服务器目录下的CGI程序,而在执行CGI程序时,Boa服务器需要fork出一个子进程来执行CGI程序。这种情况下,当来自客户端的POST请求只需要服务器本身处理,而不需要再fork出子进程时,会出现内存资源浪费的现象。
技术实现思路
本专利技术的目的是为了克服现有技术中的不足,提供一种基于嵌入式系统的Boa服务器改进方法,解决了Boa服务器无法满足来自客户端的请求为POST形式,且该POST请求只需要本地服务器处理的时候,Boa服务器仍然fork出子进程来执行,从而增加内存消耗,影响系统运行的问题。本专利技术的目的是通过以下技术方案实现的:一种基于嵌入式系统的Boa服务器改进方法,该方法包括:Boa接收一次新的请求,获取当前请求的状态,并读取HTTP头部以判断该请求的类型,若判别请求为GET方法,并进行应用层相应处理;若判别请求为POST方法,则查看当前HTTP状态是否为WRITE_BODY状态,若不是,则说明POST请求的数据还在接收中,则处于READ_BODY状态;当POST请求数据接收完毕后,处于WRITE_BODY状态,判别该POST请求是否为CGI程序,若为CGI程序,则采用Boa服务器原有方法处理;若为非CGI程序,则采用非CGI程序处理方法。所述判别请求为GET方法,则进行应用层相应处理,通过在哈希表中找到处理此GET方法的API进行处理,并返回HTTP响应。所述采用Boa服务器原有方法处理,是通过调用init_cgi函数对CGI的环境变量进行设置,为CGI程序的执行打下基础。所述非CGI程序处理方法是通过在哈希表中获取处理此POST请求的处理API,从post_data_fd中获取HTTP包体的数据,再进行系统的响应处理,返回响应结果到客户端。与现有技术相比,本专利技术的技术方案所带来的有益效果是:本专利技术方法通过对Boa的改进,使得Web服务器能够兼容更多的HTTP请求类型,除了GET、POST等常用的HTTP请求外,增加兼容CGI程序的功能使系统的网络接口更丰富,尤其在音视频文件的上传与下载方面能够提供可靠的保障和更加快捷的方式。改进的Boa框架完全适用于其他的嵌入式系统,因此具有广泛的应用意义。附图说明图1是现有技术中标准的Boa服务器工作流程。图2是本专利技术改进后的Boa服务器工作流程。具体实施方式下面结合附图对本专利技术作进一步的描述。Boa服务器的工作原理如下:对Boa的源代码进行简单的分析,为搭建嵌入式Web服务器做基础。Boa开始运行,读入配置文件boa.conf,进行一系列的初始化后,以服务器的形式启动Socket,绑定HTTP的默认端口80,接着监听远端的HTTP或HTTPS请求。当Socket接收到请求数据后,把数据存储到HTTP格式的结构体request中,这时会将请求的远端IP地址、端口等基本的信息写进结构体,并把该结构体节点添加到待处理队列中。Boa接收完HTTP请求数据,对请求的HTTP头部信息进行解析,如果头部信息没有通过服务器的HTTP认证,则直接丢弃此次请求的数据;如果头部信息通过则继续判断此次请求的类型,如果不是CGI程序,则认为是静态页面的请求数据,故直接对本次的请求进行处理并返回HTTP响应;如果请求是CGI程序,则调用init_cgi函数在服务器端进行相应的处理。通过对Boa源码的分析发现,Boa对POST请求的方法采用的是CGI程序处理。在采用CGI程序处理的应用中,请求的URL必须指定服务器CGI目录下特定的CGI处理程序,而这种情况下无法满足只需要服务器本身处理POST请求。本专利技术的目的是通过提出一种基于嵌入式系统的Boa服务器改进方法,旨在使改进后的Boa支持POST请求的非CGI处理,这样Boa服务器在处理只需要服务器本身处理的POST请求时,不需要再fork出子进程进行处理,从而减少系统中的进程数,降低系统消耗的内存。图1为现有技术中标准的Boa服务器工作流程示意图,该方法包括以下步骤:步骤101:Boa服务器首先从套接字Socket中获得请求信息get_request;步骤102:Boa服务器完成对HTTP的头部数据的接收,根据当前的HTTP请求数据对请求的HTTP头部信息进行解析;步骤103:Boa服务器对HTTP头部信息进行认证,通过HTTP头部信息,Boa服务器可以获知发送HTTP当前请求的客户端浏览器类别,如果HTTP当前请求的浏览器类别和服务器处理的浏览器类别不相符,则该HTTP请求不能通过认证,Boa服务器直接丢弃该请求数据,结束本次连接;如果HTTP当前请求的浏览器类别和服务器处理的浏览器类别相符合,则该HTTP请求通过认证;步骤104:HTTP请求通过Boa服务器的认证,判断请求的数据是否为CGI程序;步骤105:如果不是CGI程序,则Boa服务器认为是静态页面的请求数据,Boa服务器对静态页面的处理是通过函数init_get,然后将处理结果响应填充到request结构体data_mem;步骤106:如果是针对CGI程序的请求,Boa服务器首先调用init_cgi函数处理CGI请求;步骤107:Boa服务器在调用init_cgi函数后为CGI程序的运行进行相应环境变量的设置,在设置CGI环境变量的过程中,还需要移植CGIC的源码来开发CGI程序;Boa在init_cgi函数中创建管道进行通信,使CGI程序的输出最终经过管道输出到Boa服务器中,Boa从管道中获取CGI处理结果输出响应到客户端;如果CGI请求的HTTP主体存在数据,那么Boa服务器是把数据保存在request结构体中,当Boa服务器进程利用fork函数创建出子进程来运行CGI程序的时候,需要将HTTP主体数据的句柄重定向到本文档来自技高网
...
一种基于嵌入式系统的Boa服务器改进方法

【技术保护点】
一种基于嵌入式系统的Boa服务器改进方法,其特征在于,该方法包括:Boa接收一次新的请求,获取当前请求的状态,并读取HTTP头部以判断该请求的类型,若判别请求为GET方法,并进行应用层相应处理;若判别请求为POST方法,则查看当前HTTP状态是否为WRITE_BODY状态,若不是,则说明POST请求的数据还在接收中,则处于READ_BODY状态;当POST请求数据接收完毕后,处于WRITE_BODY状态,判别该POST请求是否为CGI程序,若为CGI程序,则采用Boa服务器原有方法处理;若为非CGI程序,则采用非CGI程序处理方法。

【技术特征摘要】
1.一种基于嵌入式系统的Boa服务器改进方法,其特征在于,该方法包括:Boa接收一次新的请求,获取当前请求的状态,并读取HTTP头部以判断该请求的类型,若判别请求为GET方法,并进行应用层相应处理;若判别请求为POST方法,则查看当前HTTP状态是否为WRITE_BODY状态,若不是,则说明POST请求的数据还在接收中,则处于READ_BODY状态;当POST请求数据接收完毕后,处于WRITE_BODY状态,判别该POST请求是否为CGI程序,若为CGI程序,则采用Boa服务器原有方法处理;若为非CGI程序,则采用非CGI程序处理方法。2.根据权利1中所述的一种基于嵌入式系统的Boa...

【专利技术属性】
技术研发人员:苏寒松陈震宇刘高华
申请(专利权)人:天津大学
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1