嵌入式系统及应用综合实验报告格式.docx
- 文档编号:2420785
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:20
- 大小:282.71KB
嵌入式系统及应用综合实验报告格式.docx
《嵌入式系统及应用综合实验报告格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统及应用综合实验报告格式.docx(20页珍藏版)》请在冰豆网上搜索。
嵌入式系统及应用综合实验报告格式
安徽工业大学
电气信息学院
嵌入式系统及应用综合实验报告
Linux系统下TFTP和QT下聊天程序设计
姓名:
刘洪方
学号:
109104069
专业:
工商管理
年级:
1
指导教师:
马小陆
2011年6月30日
一、课程设计项目介绍(含项目介绍及设计目的)
(四号宋体,页数不够可另加,排版要工整规范,如每个大标题应位于页首等等,以下类同)
1.项目介绍:
TFTP:
是一个服务器客户端网络程序,以提供简单文件共享服务器,支持下载,列出文件目录和上传文件功能。
QT:
是一个简单的服务器客户端聊天程序,以提供简单的数据通信。
2、设计目的:
TFTP:
是为提供一个可以为网络使用者提供文件共享简单的功能的使用。
方便网络间文件的访问和使用。
QT:
是一个支持双方简单聊天功能的程序。
两者都帮助我们锻炼理念知识和实践能力。
二、总体设计(含系统的总体结构、原理框图或各模块介绍等)
三、详细设计(含主要的数据结构、程序流程图、关键代码段及注释等)
(四号宋体,框图文字用小五宋体)
以下是各代码的解释,介绍,原理,流程图:
TFTP服务器:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineN128
typedefstructsockaddrSA;
ProcessList过程:
利用一个循环获得目录中所有的文件,并把文件名发送到客户端,最终把所有文件表发送到客户端。
完成此列出文件目录功能
voidProcessList(intconnfd)
{
charbuf[N];
DIR*mydir;
structdirent*myitem;
mydir=opendir(".");
while((myitem=readdir(mydir))!
=NULL)
{
if((strcmp(myitem->d_name,".")==0)||(strcmp(myitem->d_name,"..")==0))continue;
strcpy(buf,myitem->d_name);
send(connfd,buf,N,0);
}
closedir(mydir);
return;
}
ProcessGet过程:
首先打开需要下载的客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备接收,然后服务器以128为单位读取数据,发送数据,最终把一个文件所有内容发送给客户端。
完成下载功能。
voidProcessGet(intconnfd,charbuf[])
{
intfd,nbyte;
if((fd=open(buf+1,O_RDONLY))<0)
{
fprintf(stderr,"failtoopen%s:
%s\n",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(connfd,buf,nbyte,0);
}
close(fd);
return;
}
ProcessPut过程:
首先创建客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备发送,客户端以128为单位读取数据,发送数据,每发送一段,服务器写入这部分内容,最终把一个文件所有内容发送给服务器。
完成上传功能。
voidProcessPut(intconnfd,charbuf[])
{
intfd,nbyte;
if((fd=open(buf+1,O_WRONLY|O_CREAT|O_TRUNC,0666))<0)
{
printf("failtocreate%sonserver\n",buf+1);
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_inserver_addr;
//XXX:
step1intsocket(intdomain,inttype,intprotocol);
if((listenfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
fprintf(stderr,"failtosocket:
%s\n",strerror(errno));
exit(-1);
}
#ifdef_DEBUG_
printf("socketis%d\n",listenfd);
#endif
//XXX:
step2intbind(intsockfd,conststructsockaddr*serv_addr,socklen_taddrlen);
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=PF_INET;
server_addr.sin_port=htons(8888);
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(listenfd,(SA*)&server_addr,sizeof(server_addr))<0)
{
perror("failtobind");
exit(-1);
}
listen(listenfd,5);
while
(1)
{
if((connfd=accept(listenfd,NULL,NULL))<0)
{
perror("failtoaccept");
break;
}
recv(connfd,buf,N,0);
switch(buf[0])
{
case'L':
ProcessList(connfd);
break;
case'G':
ProcessGet(connfd,buf);
break;
case'P':
ProcessPut(connfd,buf);
break;
}
close(connfd);
}
return0;
}
TFTP客户端:
TFTP客户端:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineN128
typedefstructsockaddrSA;
Printhelp过程:
打印所有的操作帮助。
voidPrintHelp()
{
printf("help:
displayhelpinfo\n");
printf("list:
getfilelistofserver\n");
printf("get:
get
printf("put:
put
printf("quit:
quittheclient\n");
return;
}
ProcessList过程:
首先利用配置好的网络参数连接服务器,然后向服务器发送“L”命令,最后利用一个循环接收目录中所有的文件名,并打印文件名,最终把所有文件表发送到客户端。
完成此列出文件目录功能
voidProcessList(structsockaddr_inserver_addr)
{
intsockfd,nbyte;
charbuf[N];
if((sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
printf("failtolist\n");
return;
}
if(connect(sockfd,(SA*)&server_addr,sizeof(server_addr))<0)
{
printf("failtoconnectserver\n");
gotoERROR_1;
}
strcpy(buf,"L");
send(sockfd,buf,N,0);
while((nbyte=recv(sockfd,buf,N,0))!
=0)
{
printf("%s\n",buf);
}
ERROR_1:
close(sockfd);
return;
}
ProcessGet过程:
首先利用配置好的网络参数连接服务器,然后向服务器发送“G”命令并附上需要处理的文件名,创建需要下载的命令中的文件名文件,客户端准备接收,然后服务器以128为单位读取数据,写入数据,最终把一个文件所有内容接收到客户端。
完成下载功能。
voidProcessGet(structsockaddr_inserver_addr,charcommand[])
{
intsockfd,nbyte,fd;
charbuf[N];
if((sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
printf("failtoget\n");
return;
}
if(connect(sockfd,(SA*)&server_addr,sizeof(server_addr))<0)
{
printf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 应用 综合 实验 报告 格式
![提示](https://static.bdocx.com/images/bang_tan.gif)