ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:355.76KB ,
资源ID:14789131      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14789131.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式linux应用开发课程设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

嵌入式linux应用开发课程设计.docx

1、嵌入式linux应用开发课程设计 电子信息类课程设计课程名称:嵌入式linux应用开发课程设计设计题目:嵌入式linux Web服务器的设计 农林大学金山学院电子信息类课程设计结果评定评价内容评价指标评分权值评定成绩工作态度工作努力,严格按照课程技能训练设计的要求去做,表现好;遵守纪律,工作作风严谨务实。20业务水平能按时优异地完成课程设计任务,能熟练地综合运用所学理论和专业知识,在技能训练中对某些技能、技术有新建议、有小革新、有创见。动手能力强,实干精神强,团结协作能力强,适应能力强。30设计报告质量报告或成果完整、正确,概念清楚,图纸表格齐全,文字通顺,排版打印符合要求。40工作量按期完成

2、规定的任务,工作量饱满,难度较大。10成绩:指导教师签字:评定日期:嵌入式linux Web服务器的设计1. 设计的目的通过课程设计进一步掌握嵌入式linux基本程序设计的能力。掌握嵌入式linux程序的设计、运行和调试工作。熟悉搭建嵌入式开发环境及交叉编译器。掌握下载程序到目标板正确运行。2. 设计要求熟练应用socket()、bind()、accept()、connect()、send()、recv()等函数,编写网络通信程序,编写makefile文件,通过make工程管理器交叉编译程序,实现宿主PC机使用浏览器访问PXA270-EP目标板的WEB服务器。3. 主要仪器设备(软硬件环境)本

3、课程设计硬件:普通的PC机,PXA270-EP嵌入式实验箱。软件:Redhat9 并配置好ARMlinux开发环境。4. 设计内容4.1 设计原理Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层。它包含文件传输协议(FTP)、简单邮件传输协议(SMTP)、域名系统服务(DNS)、网络新闻传输协议(NNTP)和超文本传输协议(HTTP)等很多高层协议。本节将运用前面学到的知识编写一个简单功能的基于应用层HTTP协议的Web服务器。客户端(浏览器)与Web服务器之间的交互主要包含客户的请求和服务器的应答。请求和应答的格式在超文本传输协议(HTTP)中有定义。HT

4、TP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在该端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行和响应的消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。1) HTTP请求HTTP请求信息格式如下所示:HTTP请求消息 := 请求行 实体头信息列表 CRLF 实体内容请求行 :

5、= 方法URLHTTP版本号CRLF 方法 := GET|HEAD|POST|扩展方法 URL := 协议名称 宿主名 目录与文件名实体头信息列表 := 实体头信息1 CLRF 实体头信息2 CLRF 实体头信息n CLRF实体头信息 := 头部字段名:值 其中CRLF表示回车换行。请求行中的方法描述了对指定资源执行的动作,常用的方法GET、HEAD和POST等3种 方法描述GET从WEB服务器中获取对象,不同类型的对象将获取不同的信息,比如:文件类型对象,获取该文件的内容。可运行程序类型对象,获取该程序执行的结果。数据库查询类型对象,获取该查询的结果。HEAD要求服务器查找对象的元信息。PO

6、ST从客户端向WEB服务器发送数据。2)HTTP应答Web服务器处理客户请求,并向客户机发送应答报文,HTTP协议的应答报文格式为如下所示。应答报文 := 状态行 实体头信息列表 CRLF 实体内容状态行 = HTTP版本号状态码原因叙述实体头信息列表 := 实体头信息1 CLRF 实体头信息2 CLRF 实体头信息n CLRF实体头信息 := 头部字段名:值状态码描述了Web服务器执行客户机请求的状态信息 状态码含义1XX保留2XX成功接收,比如“200”表示处理成功。3XX客户需进一步细化请求。4XX客户错误,比如“404”表示访问的指定资源不存在。5XX服务器出错。4.2总体方案设计We

7、b服务器实际上是一个目录服务器的扩展,通过HTTP协议读取服务器相关目录上的内容。Web服务器通常需要具备3种用户操作:列举目录信息、显示文件内容和运行应用程序。Web服务器通过基于流的套接字连接,为客户提供上述3种操作。用户连接到服务器后,用户陆续发送请求,服务器会处理每条客户的请求信息并返回应答信息 。从流程图可以看出,Web服务器和浏览器之间的通信流程为:客户端(用户的浏览器)向Web服务器发送连接请求,服务器会接收该请求,建立一个套接字连接。服务器端陆续读取客户端的请求,进行相应的处理并返回应答信息客户端读取服务器端的应答信息,并将其按照各种格式显示在浏览器中(文本、图片、声音等内容)

8、。4.3 程序设计1)服务器代码:#include #include #include #include #include #include #include #include #include #include #include #include #include const char PATH=/mnt/hgfs/shiyan; /接收web浏览器请求void *recvMsg(void *param) int len; int fd2 = *(int*) param; /客户端的sockid char buf1024; char exname100; if(recv(fd2, buf,

9、sizeof(buf), 0)0) len=strlen(buf); printf(浏览器请求内容为:%s, buf); if(strstr(buf,Accept: )!=NULL) /获取浏览器发送的http请求中的内容类别 char *pp=strstr(buf,Accept: ); char *p1=strchr(pp, ); char *p2=strchr(pp,); strncpy(exname,p1+1,p2-p1-1); printf(name:%s, exname); /输出text/html或image/png if (strncmp(buf, GET,3) = 0) cha

10、r webname100; char *p1=strchr(buf, ); char *p2=strchr(p1+1, ); strncpy(webname,p1+1,p2-p1-1); /获取浏览器请求的文件名 printf(%s, webname); struct stat st; char filename1024=0; strcpy(filename,PATH); strcat(filename,webname); stat(filename,&st); char protol2048=0; char strTime200=0; char content_type100=0; if(s

11、trncmp(webname,/sword.jpg,10)=0) strncpy(content_type,Content-Type: image/jpegrn, strlen(Content-Type: image/jpegrn); else strncpy(content_type,Content-Type: text/htmlrn,strlen(Content-Type: text/htmlrn); char *wday = Sun, Mon, Tue, Wed, Thu, Fri, Sat; time_t timep; struct tm *p; time(&timep); p = g

12、mtime(&timep); sprintf(strTime,%s,%d-%d-%d %d:%d:%dn, wdayp-tm_wday, (1900+p-tm_year),(1+p-tm_mon),p-tm_mday,p-tm_hour, p-tm_min, p-tm_sec); sprintf(protol,HTTP/1.1 200 OKrn Server: Apache-Coyote/1.1rn ETag: W/8888-8888888888888rn Last-Modified: Thursday, 2014-11-12 12:00:00 rn %s Content-Length: %d

13、 bytesrn Date: %s rn Connection:keep-alivernrn,content_type,(int)st.st_size, strTime); printf(%s, protol); printf(%s, strTime); send(fd2,protol,strlen(protol),0); size_t len=0; char fbuf1024=0; const char*filename2=/mnt/hgfs/shiyan/abc.jpg; int fd4=open(filename2,O_WRONLY|O_CREAT,0777); int fd=open(

14、filename,O_RDONLY,0777); while(len=read(fd,fbuf,sizeof(fbuf)0) send(fd2,fbuf,len,0); write(fd4,fbuf,len); close(fd); close(fd2); pthread_exit(NULL); return NULL;int main() int fd; struct sockaddr_in serveraddr; struct sockaddr_in clientaddr; memset(&serveraddr, 0, sizeof(serveraddr); while (fd = soc

15、ket(AF_INET, SOCK_STREAM, 0) 0) printf( socket failed!n); int reuser=1; setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&reuser,sizeof(reuser); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(8080); /端口号指定为:8080serveraddr.sin_addr.s_addr = inet_addr(192.168.224.134); /设定服务器IP socklen_t len = size

16、of(serveraddr); if (bind(fd, (const struct sockaddr*)&serveraddr, len) 0) printf(bind errorn); return 0; int ret = listen(fd, 5); if (ret != 0) printf(listen errorn); return 0; else printf(listening.n); while(1) socklen_t size=sizeof(clientaddr); int fd2 = accept(fd,(struct sockaddr*)&clientaddr, &s

17、ize); if (fd2=-1) printf(accept failedn ); return 0; printf(客户端地址:%sn, inet_ntoa(clientaddr.sin_addr); pthread_t id1; pthread_create(&id1,NULL,recvMsg,&fd2); close(fd); return 0;4.4 程序的调试和运行结果调试编译:运行结果:5. 总结通过这次嵌入式linux Web服务器的设计,让我多linux的设计编程有了更深的了解。特别别是对这次的Web服务器的设计有了很大的进步,通过测试,编写的程序都能顺利运行。但由于时间紧迫,在很多地方还是做的不好,没能很深入的了解,所以我们课后要更加深入的去学习,自己动手时间多练习参考文献1 刘银水,肖正宇,孙伟.基于ARM-Linux的嵌入式WEB服务器J.单片机与嵌入式系统应用;2007.06.2 杜宝祯,祝静,徐涢基,何鹏举.基于Linux和S3C2440的GPC控制器设计J.单片机与嵌入式系统应用.2009.11. 3 吴迅;基于Linux的嵌入式WEB服务器的研究D.山东师范大学;2010. 4 马长青.Linux环境下基于Web的图档管理系统的开发D.山东农业大学;2005.5 孙亚军.基于ARM的嵌入式Linux平台的研究与实现D.东北大学.2009.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2