可移植的嵌入式WEB服务器软件设计
的差异;
8)其他功能: 包括总线数据读写、错误处理和可利用资源管理等;
2、基于中间件的嵌入式WEB服务器软件
在工业监控应用领域,选择WEB服务器构架的监控系统是非适合的,因为它不仅可以实现监控的目的,而且可以统一操作维护界面。在这种系统中,需要使用运行在现场的设备作为WEB服务器,在控制室则通过浏览器来查看现场的情况,还可以通过WEB服务器的CGI等接口,对现场设备进行人为的控制。
WEB服务器采用HTTP协议与客户端浏览器进行信息交互,通过服务器应用程序可以实现对远程设备的访问和控制。HTTP是应用层的协议,它于1990年提出,经过多年的使用与发展,得到了不断地完善和发展。
HTTP协议是基于请求/响应模式的,客户机与服务器建立连接后,发送一个请求给服务器,请求的格式为:统一资源标识符、协议版本号,后边是 MIME信息(包括请求修饰符、客户机信息和可能的内容)。服务器接收到请求后,会给予相应的响应信息,其格式为一个状态行(包括信息的协议版本号、一个成功或错误的代码),后边是MIME信息(包括服务器信息、实体信息和可能的内容)。
在WEB服务器中,客户与服务器是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WEB服务器运行时,一直在TCP80端口(WEB服务器的缺省端口)监听,等待连接的出现。下面是WEB服务器通过HTTP协议进行信息交换的步骤:
1)建立连接:连接的建立是通过申请套接字实现的。客户打开一个套接字并把它绑定在一个端口上,如果成功,就可以通过这个套接字进行数据收发了。
2)发送请求:打开一个连接后,客户机把请求消息送到服务器的监听端口上,服务器读取数据,并从接收数据中识别请求动作。HTTP/1.0 请求消息的典型格式为:
请求消息 = 请求行(通用信息|请求头|实体头) CRLF[实体内容]
请 求 行 = 方法 请求URL HTTP版本号 CRLF
方 法 = GET|HEAD|POST|扩展方法
URL = 协议名称+宿主名+目录与文件名
如: GET http://192.168.1.1/index.htm HTTP/1.0
3)发送响应:服务器在处理完客户的请求之后,要向客户机发送响应消息。HTTP/1.0的响应消息格式如下:
响应消息 = 状态行(通用信息头|响应头|实体头) CRLF [实体内容]
状 态 行 = HTTP版本号 状态码 原因叙述
状态码表示响应类型
1×× 保留
2×× 表示请求成功地接收
3×× 为完成请求,客户需进一步细化请求
4×× 客户错误
5×× 服务器错误
4)关闭连接:通讯结束后,客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。
在具体的嵌入式WEB服务器软件中,除了受制于目标硬件有限的资源外,还有一个限制就是对文件系统的支持上,因为并不是所有的目标设备都会采用文件系统,唯一可以肯定的就是嵌入式系统中一定会有非遗失性存储器,如FLASH,这样在设计嵌入式WEB服务器时,需要提供一种工具,将多个WEB网页文件转换成一个数组,并在WEB服务器中建立索引,当请求某个网页文件时,通过这个索引来查找对应的文件数据,并发送出去。嵌入式WEB服务器软件大致可以分为四个部分:通讯模块、HTTP请求处理模块、ROM文件系统、CGI接口模块。下面是嵌入式WEB服务器软件的模块结构图:

WEB服务器软件结构示意图
在上图所示的模块结构图中,通讯处理模块通过中间件提供的网络服务接口完成SOCKET连接的管理和数据收发工作;HTTP请求处理模块主要完成 HTTP消息的识别和处理;ROM文件系统则实现文件系统的模拟,为HTTP请求处理模块提供文件读写操作;CGI接口模块是客户端控制远程设备的工具,它解释来自客户端的一些操作请求,并控制目标设备执行具体的操作。
3、结束语
根据以上这个模型设计的WEB服务器,满足了工业控制对基于WEB服务器的远程管理需求,扩展的CGI接口可以实现管理系统和目标系统之间的交互,达到对远程目标控制的目的,同时软件具有良好的可移植性。
本文作者创新点: 跟传统的WEB服务器相比,基于中间件技术的嵌入式WEB服务器软件,具有结构简单、操作灵活的特点,不仅可以很好的适用于资源稀缺的嵌入式系统,而且能够非常方便的在多种操作系统之间进行移植。中间件技术能以最小的代价完成代码的移植,提高整个软件的可移植性,同时这种良好的移植性还会给代码维护带来方便。
参 考 文 献
[1]李程,李迅波.Web Services在园区智能系统建设中的应用[J].微计算机信息,2006,22-14:37-39
[2]Brian W.Kernigham 裘宗燕译 程序设计实践 机械工业出版社 2003.9
[3]Andrew N.Sloss 沈建华译 ARM嵌入式系统开发—软件设计与优化
北京航空航天大学出
- LPC2292的μC/OS-II硬件抽象层构建(04-26)
- 浅谈Win CE应用程序的可移植性(03-02)
- 一种DSP小系统接口电路可移植性设计方案(03-09)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
