FTP文件传输课程设计.docx
《FTP文件传输课程设计.docx》由会员分享,可在线阅读,更多相关《FTP文件传输课程设计.docx(35页珍藏版)》请在冰豆网上搜索。
FTP文件传输课程设计
FTP文件传输课程设计
摘要
进入信息时代,随着互联网普及,只要接上网络,就能从网上找到庞大的数据资源,其内容包罗万象,可以说几乎任何人都可以在Internet资源中找到自己所需要的信息资源。
有了网络,使用者不但可以浏览各种各样的信息资源,还能够将自己感兴趣的资源下载到本地机上。
计算机之间数据的传输大多是通过文件传输协议FTP来完成的。
FTP使用两个TCP连接来实现文件传送操作。
FTP可以管理四类不同的文件类型,且可用多种模式传输文件。
本系统是用JBuilder9.0作为开发工具完成的,系统有着良好的界面,简单易用,系统开发的总体任务是连接FTP服务器,上传/下载文件;并使用Serv-U软件构建FTP服务器,使客户端用户能够通过互联网访问FTP服务器,进行信息资源的共享和传输。
论文首先介绍FTP文件传输协议的原理和工作的机制。
然后简要介绍开发FTP客户端应用程序的一些详细的步骤(如何建立文件传输的数据连接过程)并提供了一个完整的JAVA实现的文件传输程序模块,以此来演示使用JAVA开发FTP客户端应用程序的一些具体细节。
本次论文的设计,即从需求分析,软件设计到软件功能实现,都始终遵循软件工程的思想和数据库的设计方法。
在本文中采用了大量的图表说明,使文章明确清晰,便与阅读和理解。
关键词:
FTP文件传输系统,JBuilder9.0,网络技术,软件工程
ABSTARCT
Duringenteringtotheinformationtimes,alongwiththeInternetuniversal,solongasconnectwiththenet,youcanfindoutthehugedataresourcesfromtheInternet.ItisalmostsaidthateveryonecanfindouttheinformationresourceswhichyouneedintheInternet.Hadthenetwork,theusercannotonlybrowsevariousofinformationresources,butalsodownloadresourceswhichyouareinterestedin.Mostofthedatatransferbetweencomputersarerealizedthroughfiletransferprotocol-FTP.GenerallyFTPmeansfiletransferservice.UsingtwoTCPconnections,FTPcanrealizefiletransfer.
ThissoftwaresystemcompleteswiththeJBuilder9.0tools.Andthesystemhasgoodinterface,usinginbriefandeasily.ThetotalmissionofthesystemistolinktheserverofFTP,spreadingup/downloaddocuments.AndaFTPservercanbebuiltbythesoftwareofServ-U.TheuserofclientsidethencanvisittheFTPservertouploadordownloadthefiles.
FirstlythisdesignintroducesthemechanicsandprincipleofFileTransportationProtocol(FTP).Thendetailedsteps(howtomakeadatalinkforfiletransport)ofdevelopingtheFTPClientarepresented.Aprogrammingmoduleoffiletransport,writteninjavaisavailabletodemonstratethespecificsofdevelopingaFTPClientApplicationinJAVA.Thedesignofthissoftware,namelyanalyticalfromtheneed,thesoftwaredesignsthefunctiontocarryout,allfollowingthethoughtofthesoftwareengineeringandthedesignmethodofthedatabasesalways.Thistexthadagreatdealofchartelucidation,makethearticledefinitelyclear,thenwithreadandcomprehendeasily.
KeyWords:
FTPFiletransportationsystem,JBuilder9.0,networktechnique,softwareengineering.
目录
摘要I
ABSTARCTII
目录III
第一章绪论1
1.1课题简介1
1.2FTP的工作原理1
1.2.1FTP连接1
1.2.2FTP数据处理2
1.2.3FTP命令以及响应2
1.2.4FTP登陆2
1.3相关技术和开发工具2
1.3.1JAVA简介3
1.3.2Jbuilder9.0编程环境3
1.3.3C/S的网络通信模式4
1.3.4FTP服务器端软件Serv-U4
第二章系统需求分析6
2.1任务概述6
2.2设计思想6
2.3系统工作流程与结构6
2.4用例描述7
2.5分析与设计10
2.6相关类的设计13
第三章系统界面设计及模块实现16
3.1功能说明16
3.2程序设计流程图16
3.3各界面的设计16
3.3.1主界面设计16
3.3.2连接FTP服务器界面设计17
3.3.3文件处理界面设计18
3.4模块功能介绍及核心代码20
3.4.1登录模块20
3.4.2浏览模块20
3.4.3文件上传模块21
3.4.4文件下载模块21
3.4.5断开与服务器的连接22
第四章软件测试23
4.1确定测试策略23
4.2划分输入等价类23
4.3建立测试用例23
结论25
参考文献26
致谢27
第一章绪论
1.1课题简介
随着Internet技术的兴起与发展和网络技术的蓬勃发展,人们希望通过互联网来共享网络上的资源,便于为自己结省成本,这就迫切需要实现网络与数据库的互连。
网络技术发展到今天,人们已经可以把数据库技术引入到Web系统中。
随着软件工程学的迅速发展,软件测试的理论也不断完善,软件测试的实施在整个软件生命周期中的地位也越来越重要,其工作量占软件开发总工作量的40%以上。
软件测试已成为软件生产中必不可少的质量保证手段。
FTP是Internet上使用最广泛的应用之一。
FTP服务是以它所使用的文件传输协议(FileTransferProtocol)命名的。
目前Internet上几乎所有的计算机系统上,都带有FTP工具,用户通过它可以将文档从一台计算机上传到另外一台计算机上。
普通的FTP服务要求用户必须在要访问的计算机上有用户名和口令。
而Internet上最受欢迎的是称为匿名(anonymous)FTP的服务,用户在登录这些服务器时不用事先注册一个用户名和口令,而是以"anonymous"或"ftp"为用户名,自己的电子邮件地址为口令即可。
匿名FTP是目前Internet上进行资源共享的主要途径之一。
它的特点是访问方便,800616操作简单,容易管理。
Internet上有许多的资源都是以FTP的形势提供给大家使用的,包括各种文档、软件工具包等等。
所以我选了些课题,想通过现在最热门的Java语言来实现FTP功能。
1.2FTP的工作原理
FTP(FileTransferProtocol,文件传输系统)是Internet上使用非常广泛的一种通信协议(属于TCP/IP),它是由支持Internet文件传输的各种规则组成,这些规则使Internet用户可以把文件从一个主机拷贝到另一个主机上。
FTP支持多种文件类型和文件格式,包括ASCII文件和二进制文件。
下面将从FTP连接,FTP数据处理,FTP命令及响应三个方面来介绍FTP工作原理
1.2.1FTP连接
FTP使用两条TCP连接来完成文件传输:
控制连接和数据连接。
控制连接用于传输控制,数据连接用于数据传输。
在服务器启动后,服务器就会在端口21等待客户的连接请求,有用户需要传输文件时候,客户与服务器的端口21建立一个控制连接,用来传送客户的命令和服务器的应答,该连接一直保持到客户与服务器通信结束为止。
当客户发出数据传输命令时候,服务器会主动与客户建立数据连接,并与进行数据交换。
客户端用户并不是直接处理控制连接上的FTP命令和FTP响应,而是由两个协议解释器进行处理。
用户接口为客户端用户提供一定形式的输入界面,接收用户的命令,将其转换成标准的FTP命令,最终将控制连接上的FTP响应转换成用户可以理解的方式。
1.2.2FTP数据处理
FTP协议规范中提供了多种用于文件控制的传输和存储方式,主要包括:
1)文件类型处理:
ASCII文件类型,EBCDIC文件类型,图象文件类型,本地文件类型
2)格式控制:
格式控制只能应用于ASCII文件和EBCDIC文件类型,有非打印格式控制,TELNET格式控制以及FORTRAN格式控制三种,其中默认为非打印格式控制,该格式控制下,文件不包括任何格式信息。
3)结构:
结构分文件结构,记录结构和页结构三种。
默认为文件结构,即将文件看成是一个连续的字节流,没有内部结构。
记录结构可勇于文本文件。
页结构中,每一个页都有一个页号,允许接收者以及任意的顺序存储页。
4)传输模式:
传输模式用于说明文件是如何在数据连接上进行传输的。
主要有以下三类:
流模式:
将文件当作一个字节流来传输。
块模式:
将文件当作一系列的数据块来传输。
1.2.3FTP命令以及响应
在控制连接上,FTP命令以及响应都是以NVTASCII格式进行传输的,并且每一行用CR和LF作为结束。
一般来说,FTP命令是由3到4个字节大写ASCII字符组成的,其中有一些命令有参数。
一般的FTP响应是以3个ASCII数字作为前导,其后跟相应的消息,其中2~3位数字相应消息由客户程序进行分析处理,后面的消息是提供给客户阅读的。
1.2.4FTP登陆
实际上存在两种FTP登录方式:
一种是匿名的,之所以称之为匿名的是因为任何人都可以访问它。
该站点允许那些使用Anonymous用户名以及E-MAIL地址作为密码的用户访问它.在匿名登录的方式下,一些访问类型受到了限制,如大多数站点允许下载,但是不允许匿名用户上传资料;另一种是非匿名的,这是需要一个合法的用户名和密码.用户和密码通常是系统管理员或者ISP尤其是所有者提供的.如果没有用户名和密码,将会被拒绝访问。
1.3相关技术和开发工具
本章节将介绍开发FTP文件传输系统的相关的技术和开发工具。
涉及到的内容包括:
JAVA语言,开发工具JBUILDER9的,C/S网络通信模式以及服务器端的软件Serv-U的相关知识和技术。
1.3.1JAVA简介
Java来自Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱等家用电器,对它们进行控制,和它们进行信息交流。
开始,准备采用C++,但是C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而且安全的语言,Sun公司曾依此投标一个交互式的电视项目,但是结果是被SGI打败。
可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组的成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。
Java的取名叶有一个趣闻,有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java咖啡,有一个人灵机移动说叫Java怎样,得到了其他人的赞赏,于是Java这个名字就这样传开了。
作为一种编程语言,JAVA拥有一些很独特的特性:
安全的(Secure):
Java是被设计用于网络及分布式的环境中,安全性自必是一个很 重要的考虑。
Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病 毒的侵入和破坏行为的发生。
结构中立的(Architecture Neutral):
一般而言,网络是由很多不同机型的机器所 组合而成的,CPU和作业系统体系结构均有所不同;因此,如何使一个应用程序可以 在每一种机器上执行,是一个难题。
所幸,Java的编译器产生一种结构中立的目标 文件格式(Object File Format);这使得编译码得以在很多种处理器中执行。
可移植的(Portable):
原始资料型式的大小是被指定的,例如"float"一直是表示一 个32位元IEEE 754浮点运算数字,因绝大多数的CPU都具有此共同特征。
程序库属于 系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。
解释的(Interpreted):
Java解释器能直接地在任何机器上执行Java位元码(Bytecodes), 因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。
高效能的(High Performance):
Java位元码迅速地能被转换成机器码(Machine Code), 从位元码转换到机器码的效能几乎与C与C++没有分别。
多线程的(Multi threaded):
Java语言具有多线程的功能,这对于交互回应能力及 即时执行行为是有帮助的。
动态的(Dynamic):
Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。
1.3.2Jbuilder9.0编程环境
Jbuilder是Borland公司的重点产品。
随着JAVA语言的流行,越来越多的开发者青睐这个可视化的JAVA应用开发工具。
使用Jbuilder来进行JAVA开发,可极大的加快生手的学习速度,缩短熟手的开发时间,因此在短短几年内成为广大程序员最喜爱的开发工具之一。
Jbuilder9.0则集成了软件开发、测试、部署、管理等工具,极大的提高项目的开发速度。
作为一款经典的开发工具,它之所以能吸引越来越多的开发人员,是由于它的几个非常重要同时也很独到的特性。
(1)结构易于创建
结构易于创建JBuilder提供创建平台独立的GUI工具的方式与众不同。
从表面上看,JBuilder就与VisualCafe或VisualAgeforJava一样,它默认使用一种叫做XYLayout的布局结构。
这个特性允许程序员以所见即所得的方式将组件放到结构中。
(2)结构的可维护性
在JBuilder中设置网格限制相当容易,对任何给定的组件用户都可以弹出一个网格限制对话框,在对话框中可以设置一些网格限制参数,如垂直或水平挤压和填充等。
除此之外,用户也可以直接到网格限制属性对话框中进行设置。
尽管JBuilder不能象JavaWorkshop那样在网格布局结构中直接移动组件或调整其大小那样容易和直观,但还是可以完成的。
(3)可视化编程
JBuilder提供了一个交互向导(InteractiveWizard)作为可视化编程工具。
其目的是能够自动完成组件之间的一些简单的交互操作。
然而它的不足之处是交互向导远不够直观而且缺乏一个高级的程序员所要求的灵活性。
比如当用户使用它来产生一组代码以便当按下某个开关时可以将文本从一个编辑控制放到一个选择列表中。
1.3.3C/S的网络通信模式
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
1.3.4FTP服务器端软件Serv-U
FTP个人服务器提供了给同一网络中的其他机器互相访问的功能,如:
上传文件,下载文件等实现资源的共享。
Serv-U是RobBeckers开发的一个功能强大的、简单易用的、成熟的FTP服务器,FTP服务器用户通过Internet的FTP协议共享文件。
Serv-U不仅仅能100%适用于标准的FTP,同样也包括了很多功能,是一个完美的文件共享解决方案。
FTPServ-U最新的版本是6.2,新的版本支持SSlFTP传输,支持在多个Serv-U和FTP客户端通过SSL加密连接保护您的数据安全。
是一个适合各种大小空间管理的服务器,它不仅仅拥有的很多高级的管理工具,他还是一个简单应用和安全的标准。
Serv-U是众多FTP服务器中比较通俗一个、同时拥有众多高级和管理工具。
FTPServ-U其他的安全功能:
用SSL加密数据、ODBC的支持、带宽限制、目录和文件的权限管理、IP限制、定制安全设置。
第二章系统需求分析
2.1任务概述
整个整个文件传输系统是由服务器端服务程序和客户端应用共同组成。
FTP服务器端的程序由服务器端的软件Serv—U来控制,负责接受和处理客户端的请求。
客户端由5个模块组成:
连接模块,下载模块,上传模块,目录浏览模块,以及界面组成,所有的模块功能通过界面同用户交流。
2.2设计思想
利用JAVA的网络类库中专门针对FTP文件传输的相关类以及方法,实现与现有的FTP服务器的连接与通信。
利用C/S网络应用模型的相关特点与知识,配合开发工具的自身的特点实现FTP文件传输系统。
2.3系统工作流程与结构
FTP的客户端程序的设计主要有四个部分:
客户登陆程序设计,FTP服务器目录浏览程序,FTP服务器目录更新程序设计,上传和下载文件程序设计.而相应的操作流程为:
首先客户端程序先连接服务器;然后浏览或更新FTP服务器目录;选择文件进行下载和上传;进行文件数据传输;最后断开连接.
由于JBULIEDER提供的FTP控件已经对其进行了类的封装,因而对用户来说它是透明的,不必在去编程解释响应消息了.这样使用JBULIDER9,就节约了大量的开发时间.
下图是文件传输系统的系统结构:
图2-1文件传输系统的结构
2.4用例描述
客户端实现的功能:
能连接到一个远端的FTP服务器
从远端服务器下载文件
能向远端服务器上传文件
能断开和当前远端服务器的连接
从功能上得到四个用例:
建立连接下载文件上传文件断开连接
用例图如下所示:
图2-2客户端用例图
每个用例描述文件如下:
(1)建立连接
“建立连接”用例描述了用户建立连接的整个过程。
具体描述下:
用例名称:
建立连接
用例说明:
通过网络连接到一个FTP服务器
通信协议:
使用FTP协议
基本过程:
1)输入FTP服务器的信息
2)用户发出建立或连接FTP服务器的请求
3)连接到指定的FTP服务器
(2)下载文件
“下载文件”用例描述了用户从服务器下载文件到本地文件夹的过程。
具体描述如下:
用户名称:
下载文件
用户说明:
用户获取远端服务器提供的服务,下载远程服务器上的文件到本地
通信协议:
使用FTP协议
基本过程:
1)用户确定需要下载的远端文件的信息
2)用户确定保存文件的本地路径
3)向服务器发送下载文件的请求
4)从远端服务器获取文件
5)保存文件到本地磁盘
基本过程中使用了FTP协议提交下载文件的请求,并且获取远端文件。
(3)上传文件
“上传文件”用例描述了用户从本地上传文件到服务器的过程。
具体描述如下:
用例名称:
上传文件
用例说明:
用户获取远端服务器提供的服务,上传本地的文件到远程服务器
通信协议:
使用FTP协议
基本过程:
1)用户确定需要上传的本地文件的信息
2)用户确定保存文件的远程路径
3)向服务器发送上传文件的请求
4)向远端服务器传输文件
基本过程中使用FTP协议上传文件的请求,并传输本地文件到远端服务器的指定位置。
(4)断开连接
“断开连接”用例描述了用户断开和当前服务器连接的整个过程。
具体的描述如下:
用例名称:
断开连接
用例说明:
离开当前已经连接的FTP服务器
通信协议:
使用FTP协议
基本过程:
(1)用户发送断开连接的请求
(2)将用户请求发送到FTP服务器
(3)停止从FTP服务器获取服务
(4)断开和FTP服务器的连接
预期结果是停止从当前服务器上的服务,并且断开和当前FTP服务器的连接。
客户端的活动图
4个用例的文字描述已经给出,这里使用活动图来对复杂用例进一步的说明。
这里给出实现主要功能的“下载文件”和“上传文件”两个用例的活动图。
“下载文件”用例的活动图如图所示:
图2-3“下载文件”用例的活动图
从活动图中,我们更直接的了解了该子用例的整个工作的流程如下:
(1)系统定位下载的文件和保存的路径。
(2)发送下载文件的请求。
(3)如果请求失败,则提示出错的信息,然后结束。
(4)如果请求成功,获取远程文件的内容。
(5)如果获取失败,则提示出错信息,然后结束。
(6)如果获取成功,保存文件到本地,然后结束。
“上传文件”用例的活动图如下图所示:
图2-4“下载文件”用例的活动图
从活动图中,我们更能直观的了解该子用例的整个工作流程如下:
(1)系统定位上传文件和保存路径。
(2)发送上传文件请求。
(3)如果请求失败,则提示出错信息,然后结束。
(4)如果请求成功,传输本地的文件到服务器。
(5)如果文件传输失败,则提示出错信息,然后结束。
(6)如果传输文件成功,提示传输成功,