资源描述:
《嵌入式系统及应用综合实验报告格式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、安徽工业大学电气信息学院嵌入式系统及应用综合实验报告Linux系统下TFTP和QT下聊天程序设计姓名:刘洪方学号:109104069专业:工商管理年级:1指导教师:马小陆2011年6月30日一、课程设计项目介绍(含项目介绍及设计目的)(四号宋体,页数不够可另加,排版要工整规范,如每个大标题应位于页首等等,以下类同)1.项目介绍:TFTP:是一个服务器客户端网络程序,以提供简单文件共享服务器,支持下载,列出文件目录和上传文件功能。QT:是一个简单的服务器客户端聊天程序,以提供简单的数据通信。2、设计目的:TFTP:是为提供一个可以为网络使用者提供文件共享简单的功能的使用。方便网络间文件的
2、访问和使用。QT:是一个支持双方简单聊天功能的程序。两者都帮助我们锻炼理念知识和实践能力。二、总体设计(含系统的总体结构、原理框图或各模块介绍等)三、详细设计(含主要的数据结构、程序流程图、关键代码段及注释等)(四号宋体,框图文字用小五宋体)以下是各代码的解释,介绍,原理,流程图:TFTP服务器:开始配置网络参数待客户端连接有连接接收发来的命令到缓冲区第一个字符列出服务器文件目录接收客户端上传的文件向客户端发送要下载的文件是等待客户端连接否LPG#include#include#include#include
3、#include#include#include/*SeeNOTES*/#include#include#include#include#defineN128typedefstructsockaddrSA;ProcessList过程:利用一个循环获得目录中所有的文件,并把文件名发送到客户端,最终把所有文件表发送到客户端。完成此列出文件目录功能voidProcessList(intconnfd){charbuf[N];DIR*
4、mydir;structdirent*myitem;mydir=opendir(".");while((myitem=readdir(mydir))!=NULL){if((strcmp(myitem->d_name,".")==0)
5、
6、(strcmp(myitem->d_name,"..")==0))continue;strcpy(buf,myitem->d_name);send(connfd,buf,N,0);}closedir(mydir);return;}ProcessGet过程:首先打开需要下载的客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备接收,然
7、后服务器以128为单位读取数据,发送数据,最终把一个文件所有内容发送给客户端。完成下载功能。voidProcessGet(intconnfd,charbuf[]){intfd,nbyte;if((fd=open(buf+1,O_RDONLY))<0){fprintf(stderr,"failtoopen%s:%s",buf+1,strerror(errno));buf[0]='N';send(connfd,buf,N,0);return;}buf[0]='Y';send(connfd,buf,N,0);while((nbyte=read(fd,buf,N))>0){send(con
8、nfd,buf,nbyte,0);}close(fd);return;}ProcessPut过程:首先创建客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备发送,客户端以128为单位读取数据,发送数据,每发送一段,服务器写入这部分内容,最终把一个文件所有内容发送给服务器。完成上传功能。voidProcessPut(intconnfd,charbuf[]){intfd,nbyte;if((fd=open(buf+1,O_WRONLY
9、O_CREAT
10、O_TRUNC,0666))<0){printf("failtocreate%sonserver",buf+1)
11、;return;}while((nbyte=recv(connfd,buf,N,0))>0){write(fd,buf,nbyte);}close(fd);return;}Main过程:首先初始化所有网络参数等待客户端的连接,然后以一个循环来接收客户端发来的命令首字符,并跟据这个来执行对应的操作。intmain(intargc,char*argv[]){intlistenfd,connfd;charbuf[N];structsockaddr_i