版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计课程名称:嵌入式课程设计题目名称:基于Ubuntu的网络文件传输学生学院:信息工程学院专业班级:应用电子技术3班学号:学生姓名:指导教师:2013年12月27日一、课程设计目的1.1背景嵌入式系统的教学可以分为课堂理论教学、实验教学和课程设计三个层面。这三个层面的目标有所不同。理论学习的主要目标是掌握嵌入式系统的一般原理,例如体系架构、指令系统、网络传输等;实验教学的主要目的是:掌握嵌入式系统的主要开发流程和基本方法,例如交叉编译工具链的使用、应用程序的开发等;课程设计的主要目的是通过实际的嵌入式应用开发实例,掌握嵌入式系统设计和开发的技术,积累实践和工程经验。1.2题目文件操作、网络通信是目前应用极为广泛的软件模块,要求采用Linux文件IO、Socket等API编写网络文件传输程序,实现用网络传输文件,功能类似于用QQ传输文件。通过本课程设计掌握Linux应用程序开发的基本方法,练习Linux文件IO及Socket编程的方法,从而将所学的知识融会贯通。二、设计分析本设计是在Linux(Ubuntu12.04)环境下基于Socket进行开发的,传输协议选择提供可靠通信服务的TCP协议。系统有一个服务器端和一客户端组成。先是运行服务器监听客户端的连接请求,然后客户端发出连接请求,待服务器作出应答以后,开始向服务器端发送文件。服务器端接收客户端请求后,创建一个空文档“dest_file”,并将接收到的数据写入其中。由此便实现了客户端与服务器端之间的文件传送。三、系统设计3.1相关文件其中client.c为客户端程序,server.c为服务器端程序,src_file、sishen.mp3为调试使用用的待发送源文件3.2程序基本流图四、调试结果4.1编译程序在终端上输入命令:gccclinet.c-oclientgccserver.c-oserver得到结果如下:系统中多了clinet和server两个可执行文件。4.2运行服务器端程序在终端上输入命令:./server服务器程序开始运行,并进入监听状态下,等待客户端请求。4.3运行客户端程序开启另一个终端,并在该终端上输入命令:./clientcxh-virtual-machinesrc_file服务器程序开始运行,并开始请求和发送src_file文件。4.4最终结果服务器端收到文件,并完成接收后退出。此时,查看文档中发现多了dest_file文件,其大小与src_file一致。这说明文件确实被完整的从客户端发送到了服务器端。以下是发送sishen.mp3的实验结果:客户端:服务器端:五、课设心得自己动手丰衣足食六、程序6.1客户端/*client.c*/#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/ioctl.h>#include<unistd.h>#include<netdb.h>#include<netinet/in.h>#definePORT4321#defineBUFFER_SIZE1024intmain(intargc,char*argv[]){intsockfd,sendbytes;inti;unsignedcharbuf[BUFFER_SIZE];structhostent*host;structsockaddr_inserv_addr;FILE*src_file;intreal_read_len;memset(buf,0,sizeof(buf));//清空发送缓冲器if(argc<3){fprintf(stderr,"USAGE:./clientHostname(oripaddress)Text\n");exit(1);}/*地址解析函数*/if((host=gethostbyname(argv[1]))==NULL){perror("gethostbyname");exit(1);}/*以只读方式打开源文件*/src_file=fopen(argv[2],"r");/*将源文件的读写指针移到文件的起始位置*/fseek(src_file,0,SEEK_SET);/*创建socket*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("Socketfailed!\n");exit(1);}printf("Socketid=%d\n",sockfd);/*设置sockaddr_in结构体中相关参数*/serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(PORT);serv_addr.sin_addr=*((structin_addr*)host->h_addr);bzero(&(serv_addr.sin_zero),8);/*调用connect函数主动发起对服务器端的连接*/if(connect(sockfd,(structsockaddr*)&serv_addr,sizeof(structsockaddr))==-1){perror("Connectfailed!\n");exit(1);}/*发送文件给服务器端*/while((real_read_len=fread(buf,1,sizeof(buf),src_file))>0){if((sendbytes=send(sockfd,buf,real_read_len,0))<0){perror("Senderror!\n");exit(1);}bzero(buf,BUFFER_SIZE);}fclose(src_file);printf("Finishsendfile\n");close(sockfd);exit(0);return0;}6.2服务器端/*server.c*/#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/ioctl.h>#include<unistd.h>#include<netinet/in.h>#definePORT4321#defineBUFFER_SIZE1024#defineMAX_QUE_CONN_NM5intmain(){structsockaddr_inserver_sockaddr,client_sockaddr;intsin_size,recvbytes;intsockfd,client_fd;unsignedcharbuf[BUFFER_SIZE];intreal_read_len;FILE*dest_file;dest_file=fopen("dest_file","w");/*建立socket连接*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("Socketfailed\n");exit(1);}printf("Socketid=%d\n",sockfd);/*设置sockaddr_in结构体中相关参数*/server_sockaddr.sin_family=AF_INET;server_sockaddr.sin_port=htons(PORT);server_sockaddr.sin_addr.s_addr=INADDR_ANY;bzero(&(server_sockaddr.sin_zero),8);inti=1;/*使得重复使用本地地址与套接字进行绑定*/setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));/*绑定函数bind*/if(bind(sockfd,(structsockaddr*)&server_sockaddr,sizeof(structsockaddr))==-1){perror("Bindfailed!\n");exit(1);}printf("Bindsuccess!\n");/*调用listen函数*/if(listen(sockfd,MAX_QUE_CONN_NM)==-1){perror("Listenerror!\n");exit(1);}printf("Listening....\n");/*调用accept函数,等待客户端的连接*/if((client_fd=accept(sockfd,(structsockaddr*)&client_sockaddr,&sin_size))==-1){perror("Acceptfailed!\n");exit(1);}/*调用recv函数接收客户端的请求*/memset(buf,0,sizeof(buf));while(real_read_len=recv(client_fd,buf,BUFFER_SIZE,0)){if(real_read_len<0){p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春金融高等专科学校《电子测量原理》2025-2026学年期末试卷
- 中国药科大学《临床医学实践技能》2025-2026学年期末试卷
- 中国医科大学《港口与航运管理》2025-2026学年期末试卷
- 长春电子科技学院《旅游目的地管理》2025-2026学年期末试卷
- 扬州大学《商业银行经营学》2025-2026学年期末试卷
- 扬州大学广陵学院《会计实训》2025-2026学年期末试卷
- 长春光华学院《科学技术与社会》2025-2026学年期末试卷
- 岚县安全生产经验讲解
- 消防安全短信提醒
- 2023年执业医师资格证之临床助理医师自测提分题库加答案
- 2026中考语文20篇必考文言文高频题及答案
- 2026年注册安全工程师《安全生产管理》通关试题库含答案详解【A卷】
- 2026中国科技出版传媒股份有限公司石家庄分公司(科学出版社石家庄分公司)全职期刊编辑招聘20人建设笔试参考题库及答案解析
- 2026海南三亚崖州湾科技城药械化创新服务站招聘工作人员4人笔试备考试题及答案解析
- 北京市西城区2026年高三一模英语试卷(含答案)
- 2026年学法减分练习题库及答案详解
- 2026云南红河州元阳县县属国有企业上半年招聘12人备考题库附答案详解(a卷)
- 2026年哈密市辅警招聘考试公安业务知识训练题
- 医保活动宣传策划方案(3篇)
- 2026年及未来5年市场数据中国机械零部件行业发展前景预测及投资方向研究报告
- 七下12《台阶》公开课一等奖创新教学设计
评论
0/150
提交评论