文件传输系统报告要点.docx
《文件传输系统报告要点.docx》由会员分享,可在线阅读,更多相关《文件传输系统报告要点.docx(29页珍藏版)》请在冰豆网上搜索。
文件传输系统报告要点
武汉工程大学
计算机科学与工程学院
综合设计报告
设计名称:
《软件基础》综合设计
设计题目:
简单文件传输系统
学生学号:
1405121004
专业班级:
2014智能科学与技术02
学生姓名:
楚明萱
指导教师(职称):
朱锐(讲师)
学业导师(职称):
赵彤州(副教授)
学生成绩:
完成时间:
2016年6月24日
武汉工程大学计算机科学与工程学院制
说明:
1、报告中的第一、二、三项由综合设计负责人在综合设计开始前填写并发给每个学生。
2、学业导师负责批改学生的设计报告,并给出相应的得分。
同时,就设计报告质量撰写评语。
3、指导教师就学生在设计期间的表现及设计完成情况分别给出相应的得分。
同时,就此两项情况撰写评语。
4、设计的总评成绩由上述各部分累加得出,由指导教师汇总,并填写于报告的封面。
5、设计报告正文字数一般应不少于5000字,也可由综合设计负责人根据本项综合设计的具体情况酌情增加字数或内容。
6、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各项课程设计),各专业也可根据本项综合设计的特点及内容做适当的调整,并上报学院批准。
成绩评定表
学生姓名:
楚明萱学号:
1405121004班级:
2014智能科学与技术02
类别
合计
分值
各项分值
评分标准
实际得分
评语
报告质量
30
10
报告格式规范,表述清晰,章节内容组织恰当。
符号统一,图表完备,符合规范要求。
参考文献数量在5篇以上,格式及引用符合要求。
学业导师(签字):
10
报告内容翔实,结构严谨合理。
课题背景介绍清楚,综述充分。
设计与实现等主要过程完整,论述具体透彻。
能运用所学专业知识对问题加以分析和求解。
无抄袭现象。
10
设计报告对整个设计过程进行了全面总结,体现了收获,得出了有价值的结论或结果。
平时表现
20
20
遵守学习纪律,表现良好,积极完成课程设计任务,无旷课、迟到、早退等情况。
指导教师(签字):
设计完成情况
50
30
按照要求完成设计内容,方案合理,功能完善,设计工作量饱满,能运用专业知识和技能去发现与解决实际问题。
20
在设计过程中展现出了较强的学习能力、动手实践能力、团队协作能力和创新意识。
总评成绩
一、综合设计目的、条件、任务和内容要求:
1、设计目的
本设计综合应用面向对象程序设计思想和方法、C++语言以及算法与数据结构知识解决比较简单的问题,培养学生的程序设计综合能力以及撰写文档和报告的专业能力。
2、设计任务
复习算法与数据结构知识,完成一个简单的文件传输系统。
3、设计内容
设计并实现一个简单文件传输系统。
能够实现1对1和1对多的文件传输。
在设计过程中要包含以下内容:
●代码调试(Visualstutio或其他);
●流程图(Visio)的画法与应用;
●Socket发送和接收;
●多线程的使用。
二、进度安排:
1.1个单元时间,收集资料,熟悉vs编程环境;
2.1个单元时间,学习Visio画图;
3.1个单元时间,学习代码调试;
4.1个单元时间,学习Socket通讯;
5.1个单元时间,学习多线程编程;
6.1个单元时间,完成文件传输系统;
7.4个单元试卷,撰写报告和检查。
三、应收集资料及主要参考文献:
●Visio的使用
●1.启动Visio软件。
单击左侧类别中的“流程图”,如图1所示。
●2.因为我们要创建的是一个标准的流程图,所以需要在中间的模板列表中,拖动滚动条,找到并单击“基本流程图”,如图2所示。
这样我们就可以使用标准的流程图形状进行绘制了。
●3.在“基本流程图形状”列表中,按住鼠标左键将“准备”形状拖到右边的绘图页中,如图3左所示,松开鼠标完成形状的添加。
●4.双击添加到绘图页中的“准备”形状,输入文字“准备好相关资料”,如图3右所示。
在页边的空白处单击鼠标左键可以结束文字的输入。
●5.单击鼠标左键,选择该图形,当形状周围显示绿色方块时,表示被选中了。
然后,通过格式栏中的相应按钮对字体、字号和字的颜色等进行相应设置。
这里将字体设置为黑体,字号为12pt。
●6.改变字的大小后,需要调整形状的大小。
鼠标移到绿色方块处,当鼠标变为水平箭头时,如图4左所示,按住拖动,可以调整形状的大小,以便让形状可以完全容纳文字。
然后,我们继续将“进程”形状拖动到绘图页中,这时由于在绘图页中已经存在了一个形状,系统启动了动态对齐的功能,会显示一条垂直的虚线,我们使“进程”形状与“准备”形状的中心点对齐,如图4右所示。
松开鼠标完成形状的添加。
●7.双击“进程”形状,输入文字“教务处报到”,单击空白处结束输入。
然后,选中“准备”形状,单击“格式”工具栏中的格式刷按钮复制格式,将鼠标指针移动到“进程”形状上,鼠标变成刷子形状,如图5所示。
此时单击,就可以快速地完成其文字的设置了。
●8.按照这样的操作方法,我们依次添加其他的形状,如图6所示。
●9.单击工具栏中的“连接线工具”按钮,如图7所示。
●10.鼠标指标移到“准备”形状的中心角点处,鼠标显示红色方块,如图8左所示,按住鼠标向下拖动至下一个形状的中心角点处,同样也会显示红色的方块,如图8右所示。
这种红色的方块代表着两个形状间的动态连接,此时松开鼠标就完成形状间的连线了。
●11.选择的“连接线工具”是可以连续使用的,用上面的方法将其他的形状也进行连接,连接完成后,在工具栏中单击“指向工具”按钮,鼠标恢复为正常状态,如图9所示。
●12.切换至“标题与边框”列表,将“怀旧形”边框拖到绘图页中,双击标题并输入标题文字,如“某校新生入学报到流程”。
●13.单击左侧的“背景”,将“地平线背景”拖动到绘图页中,此时系统会弹出对话框询问是否要将其作为背景页,如图10所示。
●14.这里单击“是”按钮,将其作为背景页处理,系统将背景页命名为“VBackground”,此时,流程图就绘制好了,如图11所示。
● 15.在工具栏中单击“保存”按钮,将流程图进行保存,如图12所示,文件名称为“入学流程”,文件类型设置为“绘图”,单击“保存”按钮就可以了。
● 使用Visio不仅可以制作流程图,还可以画交通图、建筑图等多种类型的图形,同学们可以开动脑筋,找到它的用武之地,提高软件的应用能力。
●用Visio做工作流程图
●visio图片也可以全选然后选择组合。
对于visio有专门的批注和标注模板。
●在实际工作中,我们常常需要向别人介绍清楚某项工作的操作流程。
若是稍微复杂一些的工作流程,仅用文字是很难清楚表达的!
这时就应充分利用可视化技术,将那些复杂的工作流程用图形化的方式表达出来,这样不仅使你表达容易,而且让别人也更容易理解。
代码调试《Windows 用户态程序高效排错》
●Socket编程《WinSock网络编程经络》
●C++多线程《windows核心编程》
摘要……………………………………………………………………………………….VI
Abstract…………………………………………………………………………………....VII
第一章课题背景(或绪论、概述)……………………………………………………..1
1.1选题背景………………………………………………………………………………1
1.2选题意义…………………………………………………..……………………………1
第二章设计简介及设计方案论述………………………………………………………..2
2.1socket的运行机制图………………………………..………………………….…..2
2.2发送端以及客户端流程图…………………………..………………………….….......3
第三章详细设计…………………………………………………………..………………..4
3.1主要流程………………………………………………..…………………………....4
3.2具体流程………………………………………………..…………………………....8
第四章设计结果及分析…………………………………………………..………………14
4.1实际运行情况……………………………………..….…........................................14
4.2待改进及添加的功能….……………………………………………………….…..16
总结…….……………………………………………………..………………………….18
致谢…….……………………………………………………..………………………….19
参考文献…….………………..………………………………..………………………….20
附录主要程序代码………...………………………………..………………………….21
摘要
文件传输是通过一条网络连接从远地站点向本地主机复制文件。
当前internet上有着各种文件传输工具,例如QQ等,但大多数是需要远地服务器控制的。
因此对于一些文件的传输工作存在着风险和资源的浪费。
基于socket的文件传输系统是用C#语言在vs2015的环境下开发完成的一种适用于内网和外网(需要有外网IP)的文件传输系统。
它具有文件传输的功能,可满足局域网,外网的日常工作和学习。
客户端以及服务端双方在TCP协议的基础上建立socket连接之后,服务端可以从客户端接收文件,在用户通讯前彼此的客户端还应该进行连接,它们之间的具体通讯过程是不需要通过服务器的点对点通讯。
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
文件传输是依靠文件传输协议(FTP)实现的,它的基本思想是客户机利用类似于远程登录的方法登录到FTP服务器,然后利用该机文件系统的命令进行操作。
事实上,因特网中很多资源都是放在FTP服务器中的,如一些试用版软件、完全免费试用的自由软件等,我们都可以采用FTP的方式大批量的获取。
因此,FTP服务与万维网服务在因特网应用领域中都占据了重要的地位。
关键词:
C#;点对点;socket连接;文件传输
Abstract
Filetransferisfromremotesitesviaanetworkconnectiontothelocalhosttocopyfiles.TheInternethasafiletransfertools,suchasQQ,etc.,butmostrequireremoteservercontrol.Sothereisariskforsomefiletransferworkandthewasteofresources.Filetransfersystembasedonsocketistousec#languageundertheenvironmentofvs2015developedakindofapplicabletotheinternalnetworkandexternalnetwork(IP)needtohavethenetworkfiletransfersystem.Ithasthefunctionofthefiletransfercanmeetthelocalareanetwork(LAN),outernetdailyworkandstudy.BoththeclientandtheserverbasedontheTCPsocketconnection,theservercanreceivefilesfromtheclient,theusercommunicationbeforetheclientshouldalsoconnecteachother,theydonotneedthroughtheserveristhespecificcommunicationprocessbetweenpointtopointcommunication.
FileTransferProtocol)istheFTPFileTransferProtocol(Englishabbreviation,theChinesereferredtoas"ontheagreement.Usedfortwo-waytransmissioncontrolfileontheInternet.Atthesametime,itisalsoanApplication(Application).UserscanuseittoyourPCandallaroundtheworldrunFTPprotocoltoconnecttotheservertoaccessawiderangeofapplicationsandinformationontheserver.,themainfunctionoftheFTPistomakeusersconnectedonaremotecomputer(thecomputerrunningFTPserverprogram)toexaminewhatremotecomputerfile,andthenthefilefromaremotecomputerkaotothelocalcomputer,ortothelocalcomputerfiletotheremotecomputer.
Filetransferisdependonthefiletransferprotocol(FTP),itisthebasicideaoftheclientbyusingthemethodofsimilarremoteloginlogintotheFTPserver,andthenusethemachineofthefilesystemcommand.Infact,alotofresourcesintheInternetareontheFTPserver,assometrialversionsoftware,completelyfreetrialoffreesoftware,wecanadoptthewayoftheFTPaccessinbulk.Therefore,FTPserviceandwebservicesinthefieldofInternetapplicationoccupiesanimportantposition.
Keywords:
C#;Pointtopoint;Socketconnection;Filetransfer
第1章课题背景(或绪论、概述)
1.1选题背景
现代科技给我们带了翻天覆地的变化,互联网就是这诸多变化之一,而且它无时不刻包围着你。
可以这样说,21世纪是互联网的世纪。
互联网是人类科技发展史中成长最快的新鲜事物,从诞生到高度发展仅仅用了二十几年,而未来的发展前景更是一片光明。
每个人可能已经感觉到了它的发展,从大大小小的网络公司到各种各样的网上商店、书店、网吧、网上银行等,就连电影院也都搬到了网上,你可以足不出户的欣赏美国大片。
早在20世纪90年代初,internet和world wide web(简称WWW)已经被大家熟知。
最近几年internet的发展更是神速,它已经深深触及到我们的生活和工作的方方面面。
随着许多新兴技术在internet中的推广应用,使用它的自身发展更日趋完善,它为用户也带来了越来多的实惠和便利。
毫不夸张地说,无论你在世界上的哪个角落,只要通过互联网,你就可以同亲人朋友、甚至是陌生人相互交流,而且形式多样。
互发邮件、交换文件、彼此聊天这已经很平常了,而现在随着网络、通信技术的相结合,已经出现了可视电话、网络家电、电子商务等。
网络用户可以通过大大小小的各类网站或主页。
他们已经越来越离不开网络,而且已经把企业网络建设纳入了未来企业发展最重要的环节。
是互联网最大的凝聚力所在,它是一个巴罗万象的信息服务系统。
1.2选题意义
随着网络通信技术的发展与用户需求日益多样化,现代局域网络正处在变革与发展之中,本课题的主要目的之一是为了更清晰地培养学生掌握科学研究方法的能力和使学生迅速体会文件传输系统的研发过程。
基于局域网的文件传输系统能够让家庭网络以及各个企业等局域网对内部资料有一个快捷,准确,安全的共享。
特别是对如今较大系统研发的模块分工合作得到了绝对保密性,从而使各项工作有计划、更科学的进行及顺利完成,使企业的办事效率得到显著提高。
文件传输系统主要功能是自动获取局域网内用户的主机名,IP地址以及工作组名字,最终以C/S模式通过TCP/IP协议实现点到点文件传输功能。
本系统既锻炼了我们的实际动手能力,使我们将大学四年所学的理论知识与实际开发相结合,又引导我们进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要的意义。
第二章设计简介及设计方案论述
2.1socket的运行机制图
一般而言,socket大部分应用于服务器与客户端的连接与通信,本系统虽然有服务器,但并不实际参与用户间的交流和文件传输,只起到辅助作用,所以在文件传输时客户端与客户端之间其实是互为服务器的,下图是从服务器与客户端之间的关系来描述socket通信机制。
图2.1socket运行机制图
2.2发送端以及客户端流程图
图2.2发送端和客户端流程图
第三章详细设计
3.1主要流程
实现
枚举磁盘,枚举目录,获取文件信息
上传文件,下载文件,执行文件,创建目录,删除目录等
传输控制结构
要实现客户端与服务端的通信,设计一个合理的传输控制结构,会使后面的工作轻松很多,为了使代码易读
首先对要使用的命令进行预定义其各个命令定义如下
#defineGetDriver0x01//磁盘信息
#defineGetDirInfo0x02//目录信息
#defineExecFile0x03//执行文件
#defineGetFile0x04//下载文件
#definePutFile0x05//上传文件
#defineDelFile0x06//删除文件
#defineDelDir0x07//删除目录
#defineCreateDir0x08//创建目录
#defineFileInfo0x09//文件信息
#defineGetScreen0x10//查看屏幕
在程序的网络通信中主要有操作命令,命令对像,和具体数据三部分,对于命令的传输定义如下结构
typedefstruct
{
intID;//操作命令
BYTElparam[BUF_LEN*2];//命令对像
}COMMAND;
因为在程序中打交道最多的就是文件,对文件的详细属性定义如下结构
typedefstruct
{
charFileName[MAX_PATH];//文件名称
intFileLen;//文件长度
charTime[50];//时间信息
BOOLIsDir;//为目录否
BOOLError;//错误信息
HICONhIcon;//图标句柄
}FILEINFO;
服务端结构
服务端还是比较简单的其整体思路如下
1.服务端循环接受连接,并把连接交给线程处理
2.线程接受"命令数据",并跟据命令ID将命令对像和SOCKET句柄传给处理函数
3.函数执行指定功能,并返回执行结果
对整体结构的描述,我们用伪代码表述如下
main()
{/*初示化设置......*/
while(true)
{
if(client=accept(server,(sockaddr*)&clientaddr,&len))//循环接受连接
{
CreateThread(NULL,NULL,SLisen,(LPVOID)client,NULL,NULL);//传递线程处理
}
}
/*清理释放资源......*/
WSACleanup();
}
服务端程序运行后循环接受连接,如果有新的连接就传递给新的线程处理,线程代码如下
DWORDWINAPISLisen(LPVOIDlparam)
{
SOCKETclient=(SOCKET)lparam;
COMMANDcommand;
while
(1)
{
if(recv(client,(char*)&command,sizeof(command),0)==SOCKET_ERROR)//接受命令数据
{
cout<<"TheClinetSocketisClosed\n";
break;
}else
{
switch(command.ID)//判断命令ID
{
caseGetDriver:
//将命令对像和SOCKET句柄传递给处理函数
GetDriverProc(command,client);
break;
caseDelFile:
DelFileProc(command,client);
break;
/*其它命令......*/
}
}
}
}
线程式的功能是接受客户端的"命令数据",并跟跟据命令ID将命令对像传递给处理函数,由函数完成指定的功能
以删除文件命令为例其函数格式如下
DWORDDelFileProc(COMMANDcommand,SOCKETclient)
{
if(DeleteFile((char*)command.lparam)==0)//command.lparam为命令对像,这里为要删除的文件路径
{
send(client,"删除失败...");
}
else
{
send(client,"删除成功...");
}
}
很容易看出,处理函数接受"命令对像"和客户端SOCKET句柄,执行后会把结果传递回去....
客户端结构
客户端结构的实现思路如下
1.跟服务端建立连接
2.发送用户命令