FTP客户端设计与实现_第1页
FTP客户端设计与实现_第2页
FTP客户端设计与实现_第3页
FTP客户端设计与实现_第4页
FTP客户端设计与实现_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络编程技术课程设计论文2012 2013学年第二学期题 目: FTP客户端设计与实现专业班级:软件工程J“val006班组 员:指导老师:日 期:2013-07-04目录关键词21.引言2工作原理2工作模式4传输模式6传输方式6二进制传输方式6客户端的总体设计6设计目的及工具的选择6设计目的6设计工具7类7客户端主要模块设计7客户端功能模块8客户端界面设计9数据流程图9客户端连接流程图9上传子模块流程图11下载子模块流程图12客户端程序实现14客户端显示界面实现14数据输入界面详细设计14服务器文件信息显示界面详细设计14上下载队列显示界面和信息显示界面详细设计15操作按钮模块详细设计15功

2、能模块实现16连接服务器16上传文件16下载文件175. 功能运行测试176. 结语20参考文献21附录22FTP客户端的设计与实现扌商要:FTP是Internet上用来传送文件的协议。它是为了我们能够在 Internet上互相传送文件而制定的文件传送标准,规定了 Internet上文件如何传 送。通过FTP协议,我们就可以跟Internet上的FTP服务器进行文件的上传或下载。 本文以实现一个简单易用的FTP客户端为H标,通过分析FTP协议的基本工作原理 和FTP的数据传输原理,研究如何使用兀眩工具对FTP客户端进行设汁,选择Java 类库中的FtpClient类来实现FTP客户端程序的上传

3、下载等主要功能,并用 eclipse软件提供的一个支持可视化编程的开发环境,从而实现了对FTP客户端的 开发。关键词:FTP协议,工作原理,FtpClient, 传下载引言目前,FTP服务已经是网络上广泛使用的一种服务了,它是建立在FTP 协议上的用于网络环境下进行文件传输的一种文件传输系统,儿乎可以传输各种 类型的文件,如文本文件,声音文件,图像文件等。一个文件传输系统有服务器 端程序和客户端程序共同组成的,客户端程序提供用户操作的界面并完成文件的 上传和下载。在网络应用中,FTP有着非常重要的地位,在Internet中一个十 分重要的就是资源,而各种各样的资源大多数都是放在FTP服务器中的

4、,为了获 得这些资源,我们必须使用FTP客户端软件。LI前流行的有cuteFTP, WS.FTP, ByteCatcher, FTP Voyage等。为了方便用户的使用,本文将介绍一种基于Java 的FTP客户端程序的设计与实现。本文首先分析了 FTP协议,FTP的工作原理等,然后介绍了如何使用Java 工具来设计和实现一个简单的FTP客户端。使用本FTP客户端,可以使用户轻松 的下载、上传网络资源。2. FTP协议分析的工作原理FTP (F订eTransferProtocol),是文件传输协议的简称。用于Internet 上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己

5、 机器与世界各地所有运行FTP协议的服务器相连,访问服务器上的资源和信息。FTP协议在TCP/IP协议栈中的位置如表1:表1 TCP/IP协议栈HTTP FTP TELN SMTP DNS TFTP NMP应用层TCPUDP传输层IP互联网络层X25 ISDN LAN WLAN FDD I ATM网络接口层当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本 地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启 动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的 计算机中。FTP采用“客户端/服务器”方式,用户要在自己的本地计算机上安 装

6、FTP客户端程序。从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP 协议来传输文件。FTP协议采用客户端/服务器(Client/Sever)模式,ill FTP客 户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机 建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应, 并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机 上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但 匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主 机上拷贝文件,而不必是该远程主机的注册用户。用

7、户使用特殊的用户名 “Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多 系统要求用户将Email地址作为口令,以便更好地对访问者进行跟综。出于安全 的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。 也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不 至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP 一直是Internet 上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着 无以计数的文件,这些文件包含了各

8、种各样的信息、数据和软件。人们只要知道 特定信息资源的主机地址,就可以用匿名FTP登陆。FTP工作模式FTP采用C/S (客户端/服务器)模式进行通信,但与其他的C/S模式网络通 信协议乂有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只 需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET 的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP通信除了有一 个默认端口 21之外,还需要其他的端口。其中默认端口(21)主要进行控制连 接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数 据传递,如文件的上载、下载等。至于非标准

9、端口的产生则要根据用户选择的连 接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器 一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端 需要提供给客户端一个IP地址和一个非标准端口。下表是儿个着名的TCP端口号:表2 TCP端口号TCP端口号关键字描述20FTP-DATA文件传输协议数据21FTP文件传输协议控制23TELENET远程登录协议25SMTP简单邮件传输协议53DOMAIN域名服务器80HTTP超文本传输协议110POP3邮局协议119NNTP新闻传送协议FTP中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通 常是8位,而

10、前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不 必对数据结构进行解释。控制连接是建立在USER-PIT和SERVER-PI之间用于交 换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发 生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间,FTP可以传 输非连续的文件,这些文件的一部分称为页。服务器DTP代表一种传输过程,它 通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设 置参数,并根据PI的指令传输数据。当然,DTP也可以转入“被动”状态。服 务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。至于用 户FT

11、P进程则是lIlPI, DTP和用户接口组成的。具体工作模式如图1所示:服务器-FTP用户一FTP图1FTP工作模式图上图中用户PI开始控制连接,控制连接与Telnet协议很象。在开始阶 段,标准FTP命令山用户PI产生并通过控制连接传送到服务器进程。服务器PI 向用户PI返回标准应答。FTP命令指定数据连接参数和文件系统操作。用户DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据 端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的 数据端口上侦听.这个数据连接是全双工的。传输模式FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这

12、两 台讣算机所处的位置、联接的方式、棋至是是否使用相同的操作系统无关。假设 两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传 输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构 是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上 运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文 件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正 在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理

13、文件或者 压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字 库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary命令告诉ftp 逐字拷贝,不要对这些文件进行处理。二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应 的。即使的地机器上包含位序列的文件是没意义的。例如,macintosh以二进 制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果 你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变 慢,也会损坏数据,使文件变得不能用。如果你知道这两台机器是同样的,则二 进制方式对文本文件和数

14、据文件都是有效的。3 FTP客户端总体设计设计目的及工具选设计目的FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时, 经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传 至服务器,让大家能够访问它,这个时候就会用到FTP客户端。虽然平时使用 windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙 的FTP客户端。IE浏览器在以下的版本不支持PASV方式访问服务器,而且IE 浏览器在登录FTP服务器的时候,无法査看返回的信息,在出错的时候,无法找 到错误的原因,因此在使用上很不方便。现在大多数的FTP客户端软件都是收费 版的,而且以英文

15、版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp、 FtpVoyager等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP客 户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具 备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。设计工具程序设计中用到的主要匚具就是Java, Java是SUN公司开发的一种面 向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境 中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。 Java摒弃了 C+中各种弊大于利的功能和许多很少用到的功能,用Java开发的

16、程序可以在网络上传输,并运行于任何客户机上。使用Jas语言可以方便的设 计出网络应用类的程序,而且Java的移植性很好,在、其应用程序在各种机器 上都能无差别的执行为了使FTP客户端能适应大多数平台下的使用,我选择使用 Java语言来实现。ftpclient 类Java类库的存在使它适合于一个不断发展的环境。在类库中我们可以 自山地加入新的方法和实例变量而不会影响用户程序的执行。并且兀它通过接 口来支持多重继承,使其比严格的类继承具有更灵活的方式和扩展性。在处理复 杂事物的时候,用到的一种基本手段就是抽象。抽象的U的就是区别事物之间的 本质和不同,面向对象编程(OOP)的实质就是利用类和对象来

17、建立抽象模型。 类表示了对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就 是表达该事物的性质和行为。使用类来建立抽象模型,是通过在类中定义变量和 方法来实现的。类中定义的属性是一种可存储值的变量,该变量代表着事物的具 体性质。在J2SE中提供了与客户端编程有关的Api,它就是类,FtpClient类 封装了 FTP协议的相关指令与实现细节,提供了一系列的方法,这些方法涵盖了 儿乎所有ftp的功能使用FtpClient类设II-FTP客户端程序可以让编程人员轻松 地实现登录远程FTP服务器、浏览服务器上的录、设置传输协议、上传文件和 下载文件等功能。本文所使用的FtpClient类

18、的构造方法和主要方法如下: (Stringhostname)此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。(Stringhostname)这个方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口 号。(Stringusername, Stringpassword)此方法利用参数username和password登录到FTP服务器。使用过Internet 的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己 的电了邮件地址oPublicvoidbinary ():该命令可把传输格式设置为:进制格式。客户端功能模块FTP客户端作为用户连接FTP

19、服务器的工具,需要具备一些基本功能模 块,如连接、上传、下载等,其中最主要的三大功能模块如下:1、下载功能模块:连接用户指定的FTP服务器,获取服务器H录下的文件 列表,当用户选择项目为文件时,点击下载可以下载用户所需要的文件。选定文件 后提示用户将文件存储在何处,用户选择存储区后开始下载任务。依靠FTP协议 的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下 载的文件,通过FTP客户端进行下载。2、上传功能模块:用户可以自行选择本机上存储的文件,上传至FTP服务 器。在用户选择存储在服务器的位置后,点击上传,选择所需要上传的文件,即 可将文件上传至服务器。3、连接功能模块

20、:将用户本机与指定的IP地址连接,验证用户命和密码,FTP服务器上进行注册。有了这三个基本的功能模块,客户端的基本应用功能即可实现。客户端界面设计为了使用户能够方便的使用FTP客户端,在设计中我将数据输入和信息 显示整合在一个页面中,全部客户端仅包含一个主要的窗口,窗口中分别有以下 五个界面:1、数据输入界面:用来让用户输入服务器地址,用户名,密码。2、服务器文件信息显示界面:主要用来显示服务器下存储的文件,方便用 户清楚的了解服务器中存储了哪些文件。3、上下载队列显示界面:显示正在下载或上传的文件线程。4、操作按钮界面:用户可以通过点击上传、下载、断开、关闭等按钮来实 现客户端的具体操作。5

21、、信息显示界面:显示当前连接信息和上传下载是否成功信息。这五个界 面可以使用eclipse IE具下的swing控件来实现,在布局时,将界面内的各个元 素整合在一个框架中。设计的主界面如图2:4 FTP展务撰I o |hifWIS 芳 25*22.206 79129朕口号用户名:金sswatleni冏玛 designpattern断开连接Til上传上经目录图2客户端界面数据流程图客户端连接流程图下图为客户端连接流程图。图3客户端连接流程图连接的结果有两种,即图中显示的连接失败和连接成功。上传子模块流程图当用户点击上传按钮后,用户可以选择需要上传的文件,并指定上传位置,将本机上的文件上传至FTP

22、服务器。下图为上传子模块流程图。图4上传模块流程图上传的结果有两种,上传失败和成功,失败时会提示用户上传失败,原 因可能是权限,如果成功上传,则提示上传成功。下载子模块流程图当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本 机上的存储位置,将服务器上的文件下载至本机。下图为上传子模块流程图。图5下载模块流程图4 FTP客户端程序实现数据输入界面详细设计该界面用来记录用来输入服务器的站点,用户名和密码信息,然后将信息发 送到服务器进行验证,利用Jtextfiled构件来实现。客户端一共有4个文本输 入框,分别为服务器地址输入框url,用户名输入框username,密码输入框 p

23、assword和端口号porto在程序运行时,用户在输入框url中输入的FTP服务 器站点、用户在输入框username中输入的用户名、用户在输入框password中 输入密码,用户在端口号输入框port中输入端口号。利用getTEXT()函数获取 输入框中的数据,将url中的数据存储至ip中,将username中的数据存储至 username中;如果用户没有在username中输入数据,则默认为用户使用匿名方 式登录,将用户名设置为designpattern, password中的数据则存储至password, 如果用户没有在password中输入数据,则默认设置为designpattern

24、。JTextField类的定义:JTextField url=new JTextField ();服务器 IP 输入框JTextField username二new JTextFieldO ;用户名输入框JTextField password=new JTextFieldO :密码输入框JTextField port二new JTextFieldO ;端口号输入框服务器文件信息显示界面详细设计该界面的作用是是显示服务器文件列表,利用Jscrollpane构件来实现。在 客户端主界面创建一个Jscrollpane,命名为ftpFileScrollPanel,并置于主界 面中间,该表格包括三个数据

25、项:文件名file,文件大小filesizes,修改日期 filedates,使用一个二维数组mydata来存储这三个数据。当客户端连接上服务 器时,表格数据自动更新,主要功能使用setTableData()函数实现。当服务器 连接时首先清除文件列表信息,利用removeAllElementsO函数实现,然后切换 到当前H录,使用ftpClient类中的cd命令实现,再使用list命令前LI录下的 数据、包括H录和文件名。JScrollPane类的定义:JScrollPane ftpFileScrollPanel=newJScrolIPane(ftpFilelnfosTable);上下载队列显

26、示界面和信息显示界面详细设计这两个模块是信息显示模块,使用JScrollPane和JTextArea构件实 现。其中taskScrollPan显示上传下载进程信息,consoleScrolIPane显示连进 程开始或结束信息,将信息显示的文本域consoleTextArea放在 滚动条面板consoleScrollPane中,并且设置为不可编辑。当客户端连接 成功或失败,上传文件或下载文件时,利用函数()和()在 相应的区域显示任务信息。JScrollPane类的定义:JScrolIPanetaskScrollPane=newJScrolIPane (taskList);JScrolIPane

27、consoleScrollPane=newJScrolIPane(consoleTextArea);操作按钮模块详细设计操作按钮使用JButton构件实现,客户端共有连接、上传、下载、断开、关 闭、上一级II、录刷、新重命名8个操作按钮,分别命名为connectButton、closeButton 、 refreshButton 、 deleteButton 、downloadButton 、 uploadButton renameButton 、 upDirButtonoJButton类的定义:private JButtonconnectButton=new JButton (连接); pr

28、ivate JButton c 1 oseBu11on=new JButton (断开连接”); private JButton refreshButton =new JButton (刷新); private JButton deleteButton = new JButton(删除”); private JButton downloadButton = new JButton (下载); private JButton uploadButton = new JButton (上传); private JButton renameButton = new JButton (重命名”); pr

29、ivate JButton upDirButton = new JButton (上级 l_| 录);每个按钮都有自己的响应事件来实现各自的功能,分别如下连接:上传:下载:().(new ActionListener ()(new ActionListener()删除:(new ActionListener ().断开:(new ActionListener ().上一级 El 录:(new ActionListener ().刷新:(new ActionListener ().重命名:(new ActionListener ().各按钮在定义各自的响应后,用户在点击这些按钮时,会做出相应的处

30、理, 启动对应的进程。功能模块实现连接服务器客户端中FtpBean类中connect方法用来实现连接服务器功能,在Java中 实现这一功能是借助FtpClient类完成的,首先是使用FtpClient类的 openServer (stringserver)方法打开远程FTP服务器,然后使用FtpClient类的 login (user, password)方法登录服务器。登录远程FTP服务器有两种方式,一 种是注册用户登录,另一种是以匿名方式登录。使用第一种方式登录需要拥有该 服务器的注册用户名和密码,匿名方式则是以designpattern作为用户名来登 录。类ftpClient提供了如下两

31、个可用于打开与FTP服务器之间的连接的方法(Stringhostname)用于建立一条与指定主机上的FTP服务器的连接,使用默 认端口号:212. connect(String dir, String hostname, int port, String username, String passwd)用于建立一条与指定主机、指定端口上的FTP服务器 的连接。本文所使用的是第一种方法进行连接,首先定义4个字符串,命名为 ip, username, port,password,分别用来接收来自数据输入界面的数据。然后将接收到的数据发 送至服务器验证,验证成功则使用对话框函数在信息显示界面中提示连

32、接成功, 失败则显示连接失败。上传文件客户端中实现上传功能的文件为FtpBean类中的uploadFile函数来实现。 当用户选择文件上传时,客户端会创建一个到FTP服务器的连接,同样使用 ftpClient类的openServer ()方法和login()登录到服务器,并切换到用户选择 的目标目录下,把传输格式设置为二进制格式,将本地文件上传至 FTP服务器。上传结束后利用()函数断开,并更新数据表格和清除任 务线程。一般情况下FTP服务器为了保证其安全性,权限中会设置是否允许用户 上传文件。上传失败时,出错处理会在对话框面板中显示出文件上传失败。上传 的具体代码见附录。下载文件客户端下载文

33、件山为FtpBean类中的downloadFile函数来实现。如果用户 想要下载列表中的某一个文件,首先判断项LI的类型是否是文件,如果是文件, 则得到下载的文件名并下载文件,如果选中的是目录,则不能下载。用户选择好 要下载的文件后,客户端打开服务器连接端口,使用ftpClient类的openServer () 方法和login ()登录到服务器,把传输格式设置为二进制格式,使用()函数获得 文件名,下载并保存至用户指定的路径。下载完成后()关闭与服务器的连接并清 除线程。当用户下载失败时,出错处理会在信息显示面板中显示下载出错。下载 的具体代码见附录。5功能运行测试为了验证程序是否能正常运行

34、,我选择连接IP为的FTP服务器来测试。运 行环境为 windows7+eclipseo首先是服务器连接的验证:在服务器地址中输入,在用户名中输入designpattern,在密码栏中输入 designpattern,点击连接按钮后,出现结果如下图:ra ftp务塔一 1? CornelL核心技术机械工业出版社,2006年3月第一版:第6章.高级Swing2793857 杨淑萍基于Java的FTP客户端程序的设计与实现.现代计算机.8 谢希仁计算机网络(第五版)电子工业出版社附录:程序源码,主要核心代码:public void connect OoStringO, 0), 0. toStrin

35、gO, (). toStnngO):(s);update ();if(Success)time = new DateO ;(time登陆服务器r+0);(false);(true);else(null, s);(true);(false);public void uploadFileO oStringO ;String targetFile=new String();StringTokenizer st二new StringTokenizer(file, *): oStringO; oStrmg ();update 0;(卜载文件+argetFile+成功);(null,卜墩文件+target

36、File+成功);time = new DateO ;(time+* 下载文件r+targetFile);else(null,瘁请选择所要下载的文件J;public void close0 X;闭连接String s=():(s);0;time = new Date 0;(tim*离开服务器:W);0;(true);(false);打开连接passwd)public String connect(String dir String hostname, int port, String username. StringString msg =”;tryftpClient = new FtpClient (hostname, port);(username, passwd);0;msg = Success;catch (FtpLoginException e)msg =登录主机失败.可能是用户名密码错误!:ftpClient=null;catch (IOException e)msg =登录主机失败.请检验端品是否正确!;ftpClient=null;catch (SecurityException e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论