Web服务器中CGI的特点及实现.pdf_第1页
Web服务器中CGI的特点及实现.pdf_第2页
Web服务器中CGI的特点及实现.pdf_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收稿日期 2001211229 作者简介 张曦煌 副教授 主要研究方向为嵌入式系统 计算机图形图像研究 柴志雷 硕士研究生 主要研究方向 为系统研究 嵌入式W eb服务器中CGI的特点及实现 张曦煌 柴志雷 江南大学 信息工程学院 江苏 无锡214036 摘 要 本文讨论的CGI基于无操作系统单片机环境的嵌入式W eb服务器 在这种环境下CGI是用户与W eb服务器 交互的唯一可行途径 本文介绍了嵌入式环境中CGI的特点和设计思想 并给出了主要实现算法 关 键 词 通用网关接口 CGI 嵌入式W eb服务器 嵌入式环境 中图分类号 TP368 5 文献标识码 A 文 章 编 号 100021220 2003 1122046203 Properties and I mplementations of CGI in EmbeddedW eb Server ZHAN G Xi2huang CHA I Zhi2lei S chool ofInf orm ation Eng ineering S outhern Yang tse U niversity W ux i214036 China Abstract CGI is the basic approach by which the client can communicate w ith theW eb server In this paper CGI in the embeddedW eb server based on SCM system sw ith no operating system s is discussed In this environment CGIbe2 come the only useable access to interact w ith the W eb server This article explained the properties and design tech2 niques of CGI in the embedded environments and the main arithmetices also were introduced here Key words CGI embeddedW eb server embedded environments 目前 W eb技术正日益影响人们的生活 W eb服务器 W eb页面无疑是普通计算机用户接触最多的事物 把W eb 服务器应用于智能家居及其它专门控制系统中 使用户能通 过通用浏览器对现场设备进行远程监控 将会极大地方便用 户操作 这是当前计算机应用技术的发展趋势 考虑到已有投 资及设备成本等因素 如能开发出适用于8位或16位单片机 环境的W eb服务器 必将极大地促进低端控制设备的网络 化 但8位或16位M CU上开发W eb服务器的难点在于容 量有限 只有几十K甚至几K空间 更重要的是8位或16位 M CU系统中没有成熟可用的操作系统 象涉及到内存管理 文件管理 进程管理这样的程序就不能在8位或16位M CU 系统中运行 用户与W eb服务器进行交互的最基本的手段是 CGI 具有CGI功能的W eb服务器就可以使用户和所控制的 设备进行交互 但标准的CGI需要用到文件 进程等操作 从 上可知标准的CGI无法在嵌入式W eb服务器中实现 本文提出了一种在嵌入式环境中 没有系统对文件管理 内存管理 进程管理等支持的情况下实现CGI的方法 并给 出了主要算法 1 CGI原理 1 1 基本概念 CGI 通用网关接口 定义了W eb服务器与CGI脚本之 间的接口标准 其主要功能是在W eb环境下 从客户端传送 一些信息给W eb服务器 W eb服务器把接收到的有关信息 放入环境变量 然后再去启动所指定的CGI脚本以完成特定 的工作 CGI脚本从环境变量中获取相关信息来运行 最后以 HTML格式输出相应的执行结果返回给浏览器端 由于用户 能传递不同的参数给CGI脚本 所以CGI技术使得浏览器和 服务器之间具有交互性 1 2 CGI输入输出 CGI输入 CGI输入方式是使用HTML表单向W eb服务器发送信 息 基本语法如下 M ETHOD属性指定将数据传送到W eb服务器的方法 输入方法有两种 1 GET 使用GET方法时 表单数据会附加在所指向 CGI脚本的URL后一起发送给W eb服务器 W eb服务器将 收到的表单数据赋予环境变量QU ERY2STR I N G 2 POST方法通过使用标准输入 STD I N 将表单数据 传送给W eb服务器 W eb服务器启动指定的脚本 并将用户 提供的数据传入该脚本 ACT I ON属性定义要对表单数据进行处理的CGI脚本 的URL CGI输出 CGI输出方式是将执行结果送给标准输出 STDOU T 进 行输出 执行结果必须是浏览器能够显示的HTML标准格式 第24卷 第11期 2003年11月 小 型 微 型 计 算 机 系 统 M I N I M ICRO SYSTEM S Vol124 No 11 Nov 2003 1 3 CGI环境变量 CGI在整个数据传送的过程中 要从W eb服务器传递有 关数据给CGI脚本 为了做到这一点 W eb服务器先将从浏 览器接收到的有关数据转换为各种环境变量 然后CGI脚本 就可以从这些环境变量中读取所需要的内容 换句话说 环境 变量是W eb服务器和CGI脚本进行数据传递的途径 1 4 CGI工作流程 图1显示在浏览器 W eb服务器和CGI脚本之间的工作 流程 图1 CGI工作流程示意图 Fig 1 Sketch map of CGI flow 如图1 浏览器将用户输入的数据传递给W eb服务器 W eb服务器根据接收到的数据设置环境变量 并新开一子进 程来执行CGI脚本 CGI脚本从环境变量中读取所需要的数 据 最后使用STDOU T输出HTML形式的结果文件 经 W eb服务器送回浏览器显示给用户 2 嵌入式W eb服务器中的CGI 2 1 设计思想及特点 由于嵌入式W eb服务器的应用领域是专门的控制设备 经过大量的调研发现绝大多数控制设备的工作流程都是基本 固定的 所以只要能提供某一种交互功能的W eb服务器就完 全可以适用于控制设备 又由于8位或16位M CU系统的局 限性 使得软件不能涉及文件操作 动态内存分配 进程管理 等概念 可见对于很多标准W eb服务器提供的功能在此环境 下无法实现 标准的CGI在这种环境下也无法完全实现 针对上述特殊情况 本文提出了一种能在8位M CU环 境下实现W eb服务器的方法 该方法很好地符合了控制设备 信息化改造过程中低成本 高可用性的要求 在低端控制设备 中有很高的实用价值 该W eb服务器只提供单纯的CGI功 能 使用户能够跟设备进行必要的交互 对W eb服务器的其 它功能则不支持 对于原先标准CGI作为独立可执行文件完 成的功能 现在移到W eb服务器内部作为一个函数处理 只 给用户留有必要的接口 在进行二次开发时用 用户开发完成 的函数嵌入在W eb服务器中 统一编译后作为一个整体运行 系统特点 系统遵循HTTP协议 遵守CGI标准 符合W eb基本 原理 CGI作为W eb服务器中的一部分 而不是一个单独 的可执行文件 没有标准输入 CGI函数可以直接获取到浏览器送来 的信息 没有标准输出 CGI函数可以直接将数据送回给浏览器 没有环境变量 CGI和W eb服务器在同一程序中实 现 不需要环境变量来交换信息 适合于8位和16位M CU系统 2 2 工作流程 W eb服务器接收浏览器请求进行分析 判断如果没有从 客户端传来参数 则调用用户提供的get2status 函数取得设 备的当前状态显示给客户端浏览器 用户可以通过操作界面 设置设备的新参数 发回给W eb服务器 W eb服务器利用 CGI处理模块分解出传来的参数 并通过用户提供的get2sta2 tus 函数 设置设备的新状态 同时回送给客户端 客户端浏 览器可以和W eb服务器进行连续交互 以此监控设备的运行 2 3 流程示意图 图2 程序流程图 Fig 2 CGIprogram flow chart 2 4 主要函数及功能 void do2service int sd 该函数是主要处理函数 完成读请求 分析请求 把请求 中传来的参数送给CGI处理函数 把获取的机器状态或用户 设置的机器新状态封装成HTML格式送回给浏览器 request2rec 3parse2request2line request2rec3r 740211期 张曦煌 等 嵌入式W eb服务器中CGI的特点及实现 分解请求行 该函数用来把接收到的请求行分解为请求 方式 URL HTTP版本号三部分 request2rec handle2filename request2rec3r 获取GET方式时 之后的数据 这是用户端输入并经 过编码的数据 表现为 header2 value 58 以备后面用到 void cgi2process char3input 该函数用来把FORM提交的数据分解开 这其实是把标 准CGI脚本所做的工作引入了W eb服务器程序中 这是因 为单片机中不能有文件操作所做的一种改进 符合W eb和 CGI的基本概念 同时解决了单片机中不支持文件操作的问 题 void pack2htm l2formation char3form2cgi 该函数用来把要发送回浏览器的系统状态数据封装成 HTML格式待发送 发送工作由do2service int sd 来完成 void send2status2line char3array int sd 发送状态行 由于单片机的处理极为简单 该函数已简化 为发送一个固定的状态行 HTTP 1 1 200OK r n void send2white2line int sd 发送空白行 为了标志响应消息头的结束 需要在状态行 之后发送一空白行 因为这里响应的头也被省略了 2 5 用户接口 在这里用户指的是使用该W eb服务器的具体设备控制 程序开发人员 在此由于已把CGI部分放入了服务器 所以 要求用户提供下列函数作为接口 经过一起编译并固化到单 片系统后成为控制各种具体设备的嵌入式W eb服务器 void get2status char3stat2 list 该函数用来获取设备当前状态 由用户根据具体设备来 完成 可以把获取到的各个控制选项值转换为字符型按固定 顺序放入数组stat2list void set2status char3stat2 list 该函数从stat2list 中取传来的新参数设置控制设备中 相应选项来控制设备的运行 上述两个函数由用户提供并和 W eb服务器程序有简单的接口 在程序结构不改变的前提 下 完全可以根据具体情况设计更为精确的用户接口 由于用 户接口涉及到各种具体设备 在此只给出精简的示范 没有给 出更为详细的说明 void htm l2formation char3form2 cgi 用户用该函数设置适合的HTML格式来显示自己的操 作界面 注意把固定显示的数据放入form2cgi 数组中的相 应位置 把每次运行时临时生成的显示数据放置的位置留为 3 结束语 目前 嵌入式W eb技术是计算机领域研究的热点 开发 出低成本 高通用性 能运行在8位或16位M CU环境中的 嵌入式W eb服务器将会极大地促进低端控制设备的信息化 在进行嵌入式系统开发时 很多通用的W eb技术仍然具有借 鉴意义 因为这些技术遵循了标准 只有符合这些标准的 W eb才能最大程度的通用 但嵌入式系统毕竟不同于普通的 PC系统 通用W eb技术在嵌入式系统中应用时不能原封不 动地加以照搬 而需要在遵循原理和标准的情况下做一定的 改进 本文对CGI在嵌入式W eb服务器中的实现进行了深入 探讨 并详细地介绍了具体实现细节 该系统已成功应用在 80C196以及80C51单片机为核心的嵌入式系统中 Reference 1Cao Jian L i wen2bin Zhang jian2feng Instance tutorial of perl5 PHP4 and CGI M Beijing Publishing House of Elec2 tronics Industry 2000 2W ang Xiao2ping Zhong Jun Advanced network programm ing w ith visual basic M Beijing People s Postage Publis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论