1、1.2设计目的 31.3设计内容 31.4 设计用途 3第二章 嵌入式WEB服务器设计原理简介 42.1 需求说明 42.2 功能需求详细说明 42.3 数据流图(DFD) 62.4 数据需求 6第三章 嵌入式WEB服务器设计流程 73.1 系统结构图 73.2 整体结构图说明 73.3 连接处理模块 83.4功能分配 8第四章 嵌入式WEB服务器设计程序分析及实践 104.1 程序设计 104.2程序分析 114.3 实验步骤 15参考文献 17第一章 绪论1.1课题简介随着后PC时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。目前已广泛应用于信息家电、数据网络、工业控制、医疗卫生、
2、航空航天等众多领域。巨大的市场潜力,无穷的商机,吸引了各路英豪纷踵沓来。ARM单片机技术由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中,电流、电压、温度、压力和流量也都是常用的被控参数。ARM单片机控制嵌入式WEB服务器系统,是利用ARM作为系统的主控制器,由linux下的vi编程,来实现对于嵌入式WEB服务器的访问。本设计采用ARM技术,其具有集成度高,运算快速快,体积小、运行可靠,价值低廉的特点,适宜于绝大多数的控制过程。鉴于这样的重要性,我们打算设计一种基于ARM的嵌入式服务器系统。1.2设计目的运用ARM体系结构与编程所学知识及查阅相关资料,完成嵌入
3、式WEB服务器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。1.3设计内容熟知嵌入式WEB服务器的工作原理、SOCKET网络编程。使用Redhat Linux 9.0 操作系统环境及ARM 编译器,编译WEB服务器的驱动模块和应用程序,实现嵌入式WEB服务器的设计。1.4 设计用途学习使用SOCKET进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计, 读懂HTTPD.C 源代码。在此基础上增加一些其他功能。在PC计算机上使用浏览器测试嵌入式WEB服务器的功能。第二章 嵌入式WEB服务器设计原理简介2.1需求说明图2.1 嵌入式WEB服务器需求说明2.2 功
4、能需求详细说明1)获取服务器当前目录文件列表将服务器当前目录下所有文件的信息发送给客户端,信息包括:文件名、大小、日期。2)获取指定文件将客户请求的文件发送给客户。3)获取HTML 类型文件将客户请求的HTML 类型文件发送给客户。4)获取纯文本文件将客户请求的纯文本发送给客户。5)获取JPG 图像文件将客户请求的JPG 图像文件发送给客户。6)解析用户请求分析客户的请求,将请求信息解析为几个变量,包括:请求的命令、请求的文件名、请求的文件类型。2.3 数据流图(DFD)图2.2 数据流图(DFD)2.4 数据需求回应HTTP协议数据头格式要求,如表2.1 所示:表2.1 HTTP 协议数据头
5、格式行号字段内容举例1状态行HTTP/1.0 200 OK2文件类型Content-type: text/html3服务器信息Server: ARMLinux-httpd 0.2.44是否过期Expires: 0第三章 嵌入式WEB服务器设计流程3.1 系统结构图图3.1 系统结构图3.2 整体结构图说明主程序:建立TCP 类型SOCKET 在80 端口进行监听连接请求。接收到连接请求,将请求传送给连接处理模块处理。并继续进行监听。3.3 连接处理模块图3.2 连接处理模块3.4功能分配1)发送当前目录文件列表信息2)发送HTML 类型文件3)发送纯文本文件4)发送JPG 图像文件5)发送GI
6、F 图像文件将客户请求的GIF 图像文件发送给客户。6)解析客户请求HTTP 协议头分析客户的请求,包括:1. 空格处理2. 解析客户请求命令3. 解析客户请求的资源名4. 解析客户请求的资源类型。7)客户连接处理解析Referrer 和content_length 字段值并调用客户请求解析函数。8)发送HTTP 协议数据头根据发送文件类型发送相应的HTTP 协议头信息。第四章 嵌入式WEB服务器设计程序分析及实践4.1 程序设计4.1.1、接口设计客户连接处理函数名:int HandleConnect(int fd)参数:客户连接文件描述字4.1.2、解析客户请求int ParseReq(F
7、ILE *f, char *r)参数1:文件流FILE 结构指针,用于表示客户连接的文件流指针。参数2:字符串指针,待解析的字符串。4.1.3、发送HTTP协议数据头int PrintHeader(FILE *f, int content_type)用于写入HTTP协议数据头信息。信息类型,用于确定发送的HTTP 协议数据头信息。4.1.4、发送当前目录文件列表信息int DoDir(FILE *f, char *name)用于写入目录文件信息数据。目录名,表示客户请求的目录信息。4.1.5、发送HTML文件内容int DoHTML(FILE *f, char *name)用于写入文件信息数据
8、。客户请求的文件名。4.1.6、发送纯文本(TXT)文件内容int DoText(FILE *f, char *name)4.1.7、发送JPEG图像文件内容int DoJpeg(FILE *f, char *name)4.1.8、发送GIF图像文件内容int DoGif(FILE *f, char *name)4.2程序分析 4.2.1、主程序设计1)功能说明系统的总入口,也是系统的主要控制函数。分别完成如下功能:建立环境设置。设置信号处理方式。建立侦听TCP 流方式SOCKET 并绑定80 端口。建立连接侦听及客户连接处理调用主循环。2)算法流程图算法流程图如图4.1所
9、示:图4.1 主程序数据流程图3)命令行输入处理用户在命令行输入参数 -i ,则将客户输入文件描述字设为0,即标准输入。用于在本机进行测试。其他输入全部忽略。4.2.2、客户连接处理模块设计用于初步处理客户的连接请求,并将请求信息传递给客户请求解析函数处理。2)算法算法流程图如图2.2所示:图4.2 客户连接处理模块数据流程图4.2.3、客户请求解析处理模块设计用于解析客户的请求,并根据请求信息调用相应的函数进行请求处理。算法流程图如图2.3所示:图4.3 客户请求解析处理模块数据流程图4.2.4、发送HTTP协议数据头模块设计根据参数的不同,发送不同的HTTP 协议头信息。函数定义为:
10、048727;发送请求成功信息:HTTP/1.0 200 OK。根据文档类型发送相应的信息:fprintf(),函数中的第一个参数f 为客户连接文件流句柄。switch (content_type)case t:fprintf(f, text/plainn);break;g image/gifnj image/jpegnh text/htmln发送服务器信息: AMRLinux-httpd 0.2.4n发送文件过期为永不过期: 0n4.3 实验步骤4.3.1、阅读理解源码进入/arm2410s/exp/basic/09_httpd 目录,使用vi 编辑器或其他编辑器阅读理解源代码4.3.2、编
11、译应用程序运行make 产生可执行文件httpdrootzxt /# cd /arm2410s/exp/basic/09_httpd/rootzxt 09_httpd# makearmv4l-unknown-linux-gcc -DHTTPD_DOCUMENT_ROOT=/mnt/yaffs -c -o httpd.o httpd.c -c -o copy.carmv4l-unknown-linux-gcc -o ./bin/httpd httpd.o copy.o -lpthreadarmv4l-unknown-linux-gcc -o httpd httpd.o copy.o -lpthr
12、eadrootzxt 09_httpd# lscopy.c doc httpd httpd.o Makefilecopy.o Google httpd.c index.html Makefile.bak4.3.3、下载调试使用NFS 服务方式将HTTPD 下载到开发板上,并拷贝测试用的网页进行调试,本例中用的是index 测试网页。/mnt/yaffscd /host/exp/basic/09_httpd/host/exp/basic/09_httpd./httpdstarting httpd.press q to quit.wait for connection.4.3.4、本机测试在台式机的浏览器中输入http:/192.168.0.111(111 为UP-AMR2410-S 实验板的IP地址),观察在客户机的浏览器中的连接请求结果(如图4.4)和在开发板上的服务器的打印信息。图4.4 IE显示结果参考文献1 杜春雷,ARM体系结构与编程M清华大学出版社,2003,22 梅丽凤等,单片机原理及接口技术(修订本)M北方交通大学出版社,2004,23 王洪辉,嵌入式系统Linux内核开发实战指南(ARM平台)M电子工业出版社,2009,34 王福瑞等单片机微机测控系统设计大全M北京航空航天大学出版社,1999.3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1