FTP客户端设计与实现

上传人:hao****an 文档编号:98747518 上传时间:2022-05-30 格式:DOC 页数:27 大小:416.42KB
收藏 版权申诉 举报 下载
FTP客户端设计与实现_第1页
第1页 / 共27页
FTP客户端设计与实现_第2页
第2页 / 共27页
FTP客户端设计与实现_第3页
第3页 / 共27页
资源描述:

《FTP客户端设计与实现》由会员分享,可在线阅读,更多相关《FTP客户端设计与实现(27页珍藏版)》请在装配图网上搜索。

1、 目录摘要.2关键词.21.引言.22.FTP协议分析.2 2.1FTP工作原理.2 2.2FTP工作模式.4 2.3FTP传输模式.6 2.3.1ASCII传输方式.6 2.3.2二进制传输方式.63.FTP客户端的总体设计.6 3.1设计目的及工具的选择.6 3.1.1设计目的.6 3.1.2设计工具.7 3.1.3FtpClient类.7 3.2客户端主要模块设计.7 3.2.1客户端功能模块.8 3.2.2客户端界面设计.9 3.3数据流程图.9 3.3.1客户端连接流程图.9 3.3.2上传子模块流程图.11 3.3.3下载子模块流程图.124.FTP客户端程序实现.14 4.1客户

2、端显示界面实现.14 4.1.1数据输入界面详细设计.14 4.1.2服务器文件信息显示界面详细设计.14 4.1.3上下载队列显示界面和信息显示界面详细设计.15 4.1.4操作按钮模块详细设计.15 4.2功能模块实现.16 4.2.1连接服务器.16 4.2.2上传文件.16 4.2.3下载文件.175. 功能运行测试.176.结语.20参考文献.21附录.22FTP客户端的设计与实现摘要:FTP是Internet上用来传送文件的协议。它是为了我们能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。通过FTP协议,我们就可以跟Internet上

3、的FTP服务器进行文件的上传或下载。本文以实现一个简单易用的FTP客户端为目标,通过分析FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用Java工具对FTP客户端进行设计,选择Java类库中的FtpClient类来实现FTP客户端程序的上传下载等主要功能,并用eclipse软件提供的一个支持可视化编程的开发环境,从而实现了对FTP客户端的开发。关键词:FTP协议 ,工作原理,FtpClient,上传下载引言 目前,FTP服务已经是网络上广泛使用的一种服务了,它是建立在FTP协议上的用于网络环境下进行文件传输的一种文件传输系统,几乎可以传输各种类型的文件,如文本文件,声音文件,图像文

4、件等。一个文件传输系统有服务器端程序和客户端程序共同组成的,客户端程序提供用户操作的界面并完成文件的上传和下载。在网络应用中,FTP有着非常重要的地位,在Internet中一个十分重要的就是资源,而各种各样的资源大多数都是放在FTP服务器中的,为了获得这些资源,我们必须使用FTP客户端软件。目前流行的有cuteFTP,WS_FTP,ByteCatcher,FTP Voyage等。为了方便用户的使用,本文将介绍一种基于Java的FTP客户端程序的设计与实现。 本文首先分析了FTP协议,FTP的工作原理等,然后介绍了如何使用Java工具来设计和实现一个简单的FTP客户端。使用本FTP客户端,可以使

5、用户轻松的下载、上传网络资源。2. FTP协议分析 2.1FTP的工作原理 FTP(FileTransferProtocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运行FTP协议的服务器相连,访问服务器上的资源和信息。FTP协议在TCP/IP协议栈中的位置如表1: 表1 TCP/IP协议栈HTTP FTP TELN SMTP DNS TFTP NMP 应用层 TCP UDP 传输层 IP 互联网络层 X25 ISDN LAN WLAN FDDI ATM 网络接口层 当启动FTP从远程计算机拷贝文件时,

6、事实上启动了两个程序:一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采 用“客户端/服务器”方式,用户要在自己的本地计算机上安装FTP客户端程序。 从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP

7、有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一

8、些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。2.2 FTP工作模式FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET的默认端口是23,用户从头到尾都只需使用这个端口

9、。但是FTP通信除了有一个默认端口21之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。下表是几个著名的TCP端口号: 表2 TCP端口号TCP端口号 关键字 描述 20 FTP-DATA 文件传输协议数据 21 FTP 文件传输协议控制 23 TELEN

10、ET 远程登录协议 25 SMTP 简单邮件传输协议 53 DOMAIN 域名服务器 80 HTTP 超文本传输协议 110 POP3 邮局协议 119 NNTP 新闻传送协议 FTP中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8位 ,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间,FTP可以传输非连续的文件,这些文件的一部分称为页。服务器DTP代表

11、一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。当然,DTP也可以转入“被动”状态。服务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。至于用户FTP进程则是由PI,DTP和用户接口组成的。具体工作模式如图1所示:FTP请求用户用户接口服务器aFTP响应用户a1文件传输系统文件传输系统用户b2数据连接服务器 b 服务器-FTP用户FTP 图1FTP工作模式图 上图中用户PI开始控制连接,控制连接与Telnet协议很象。在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。服务器PI向用

12、户PI返回标准应答。FTP命令指定数据连接参数和文件系统操作。用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。 2.3FTP传输模式 FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:A

13、SCII传输模式和二进制数据传输模式。2.3.1 ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理。2.3.2二进制传输方式 在二进制传输中,保存文件的位序,以便原始和

14、拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。3 FTP客户端总体设计3.1设计目的及工具选3.1.1 设计目的 FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会

15、用到FTP客户端。虽然平时使用windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙的FTP客户端。IE浏览器在6.0以下的版本不支持PASV方式访问服务器,而且IE浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以

16、作为下载、上传文件的工具来使用。3.1.2 设计工具 程序设计中用到的主要工具就是Java,Java是SUN公司开发的一种面向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。Java摒弃了C+中各种弊大于利的功能和许多很少用到的功能,用Java开发的程序可以在网络上传输,并运行于任何客户机上。使用Java语言可以方便的设计出网络应用类的程序,而且Java的移植性很好,在 、其应用程序在各种机器上都能无差别的执行为了使FTP客户端能适应大多数平台下的使用,我选择使用Java语言来实现。3.1.3 f

17、tpclient类 Java类库的存在使它适合于一个不断发展的环境。在类库中我们可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使其比严格的类继承具有更灵活的方式和扩展性。在处理复杂事物的时候,用到的一种基本手段就是抽象。抽象的目的就是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用类和对象来建立抽象模型。类表示了对象的类别,是创建对象的蓝本。建立一个事物的抽象模型,本质上就是表达该事物的性质和行为。使用类来建立抽象模型,是通过在类中定义变量和方法来实现的。类中定义的属性是一种可存储值的变量,该变量代表着事物的具体性质。 在J2SE中

18、提供了与客户端编程有关的Api,它就是.ftp.FtpClient类,FtpClient类封装了FTP协议的相关指令与实现细节,提供了一系列的方法,这些方法涵盖了几乎所有ftp的功能使用FtpClient类设计FTP客户端程序可以让编程人员轻松地实现登录远程FTP服务器、浏览服务器上的目录、设置传输协议、上传文件和下载文件等功能。 本文所使用的FtpClient类的构造方法和主要方法如下:1.PublicFtpClient(Stringhostname)此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。2.PublicvoidopenServer(Stringhostname)这个

19、方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口号。3.Publicvoidlogin(Stringusername,Stringpassword)此方法利用参数username和password登录到FTP服务器。使用过Internet的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。Publicvoidbinary():该命令可把传输格式设置为二进制格式。3.2.1客户端功能模块 FTP客户端作为用户连接FTP服务器的工具,需要具备一些基本功能模块,如连接、上传、下载等,其中最主要的三大功能模块如下:1、下载功能模块:连接用户指定

20、的FTP服务器,获取服务器目录下的文件列表,当用户选择项目为文件时,点击下载可以下载用户所需要的文件。选定文件后提示用户将文件存储在何处,用户选择存储区后开始下载任务。依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件,通过FTP客户端进行下载。2、上传功能模块:用户可以自行选择本机上存储的文件,上传至FTP服务器。在用户选择存储在服务器的位置后,点击上传,选择所需要上传的文件,即可将文件上传至服务器。3、连接功能模块:将用户本机与指定的IP地址连接,验证用户命和密码,在FTP服务器上进行注册。有了这三个基本的功能模块,客户端的基本应用功能即可实现。3

21、.2.2客户端界面设计 为了使用户能够方便的使用FTP客户端,在设计中我将数据输入和信息显示整合在一个页面中,全部客户端仅包含一个主要的窗口,窗口中分别有以下五个界面:1、数据输入界面:用来让用户输入服务器地址,用户名,密码。2、服务器文件信息显示界面:主要用来显示服务器下存储的文件,方便用户清楚的了解服务器中存储了哪些文件。3、上下载队列显示界面:显示正在下载或上传的文件线程。4、操作按钮界面:用户可以通过点击上传、下载、断开、关闭等按钮来实现客户端的具体操作。5、信息显示界面:显示当前连接信息和上传下载是否成功信息。这五个界面可以使用eclipse工具下的swing控件来实现,在布局时,将

22、界面内的各个元素整合在一个框架中。设计的主界面如图2: 图2 客户端界面3.3数据流程图3.3.1 客户端连接流程图运行客户端后,首先是连接服务器,需要输入服务器IP地址及用户名和密码点击连接按钮后开始连接服务器。下图为客户端连接流程图。用户输入服务器地址及用户名和密码 连接服务器发送用户名及密码至服务器在信息显示模块显示连接成功是否连接成功是获取服务器文件列表否刷新服务器文件显示文件列表在信息显示模块显示连接失败 图3 客户端连接流程图连接的结果有两种,即图中显示的连接失败和连接成功。3.3.2 上传子模块流程图 当用户点击上传按钮后,用户可以选择需要上传的文件,并指定上传位置,将本机上的文

23、件上传至FTP服务器。下图为上传子模块流程图。点击上传按钮弹出文件选择对话框获取用户选择的文件名新建一个上传任务登录到FTP服务器目标目录下上传是否成功弹出对话框显示上传成功是重新获取服 务器文件列表更新服务器文件列表否 清除线程弹出对话框显示上传失败 图4 上传模块流程图 上传的结果有两种,上传失败和成功,失败时会提示用户上传失败,原因可能是权限,如果成功上传,则提示上传成功。3.3.3 下载子模块流程图当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存储位置,将服务器上的文件下载至本机。下图为上传子模块流程图。选择要下载的文件点击下载按钮选择文件在本机存储位置获取文

24、件信息将信息传送至任务新建下载任务登录到FTP服务器目标目录下下载是否成功弹出对话框显示下载成功是重新获取服务器文件列表更新服务器文件列表否弹出对话框显示下载失败清除线程图5下载模块流程图4 FTP客户端程序实现4.1.1数据输入界面详细设计该界面用来记录用来输入服务器的站点,用户名和密码信息,然后将信息发送到服务器进行验证,利用Jtextfiled构件来实现。客户端一共有4个文本输入框,分别为服务器地址输入框url,用户名输入框username,密码输入框password 和端口号port。在程序运行时,用户在输入框url中输入的FTP服务器站点、用户在输入框username中输入的用户名、

25、用户在输入框password 中输入密码,用户在端口号输入框port中输入端口号。利用getTEXT()函数获取输入框中的数据,将url中的数据存储至ip 中,将username中的数据存储至username中;如果用户没有在username中输入数据,则默认为用户使用匿名方式登录,将用户名设置为designpattern,password中的数据则存储至password,如 果 用 户 没 有 在password 中输 入 数 据 , 则 默 认 设 置 为designpattern。JTextField类的定义:JTextField url=new JTextField();服务器IP输入

26、框JTextField username=new JTextField();用户名输入框JTextField password=new JTextField();密码输入框JTextField port=new JTextField();端口号输入框4.1.2服务器文件信息显示界面详细设计该界面的作用是是显示服务器文件列表,利用Jscrollpane构件来实现。在客户端主界面创建一个Jscrollpane,命名为ftpFileScrollPane1,并置于主界面中间,该表格包括三个数据项:文件名file,文件大小filesizes,修改日期filedates,使用一个二维数组mydata来存储

27、这三个数据。当客户端连接上服务器时,表格数据自动更新,主要功能使用setTableData()函数实现。当服务器连接时首先清除文件列表信息,利用removeAllElements()函数实现,然后切换到当前目录,使用ftpClient类中的cd命令实现,再使用list命令前目录下的数据、包括目录和文件名。JScrollPane类的定义:JScrollPane ftpFileScrollPane1=newJScrollPane(ftpFileInfosTable);4.1.3上下载队列显示界面和信息显示界面详细设计 这两个模块是信息显示模块,使用JScrollPane和JTextArea构件实现

28、。其中taskScrollPan显示上传下载进程信息,consoleScrollPane显示连进程开始 或 结束 信 息 , 将 信 息 显示 的 文 本 域consoleTextArea放在 滚 动条 面 板consoleScrollPane中,并且设置为不可编辑。当客 户 端 连 接 成 功 或 失 败 ,上 传 文 件 或 下 载 文 件 时 , 利 用 函 数taskScrollPane.append()和consoleTextArea.append()在相应的区域显示任务信息。JScrollPane类的定义:JScrollPanetaskScrollPane=newJScrollPa

29、ne(taskList);JScrollPaneconsoleScrollPane=newJScrollPane(consoleTextArea);4.1.4操作按钮模块详细设计操作按钮使用JButton构件实现,客户端共有连接、上传、下载、断开、关闭、上一级目、录刷、新重命名8个操作按钮,分别命名为connectButton、closeButton、refreshButton 、deleteButton 、 downloadButton 、 uploadButton renameButton 、upDirButton。JButton类的定义: private JButtonconnectBu

30、tton=new JButton(连接);private JButton closeButton=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 JButt

31、on(重命名);private JButton upDirButton = new JButton(上级目录);每个按钮都有自己的响应事件来实现各自的功能,分别如下连接:connectButton.addActionListener( ).上传:uploadButton.addActionListener(new ActionListener().下载:downloadButton.addActionListener(new ActionListener().删除:deleteButton.addActionListener(new ActionListener().断开:closeButto

32、n.addActionListener(new ActionListener().上一级目录:upDirButton.addActionListener(new ActionListener().刷新:refreshButton.addActionListener(new ActionListener().重命名:renameButton.addActionListener(new ActionListener().各按钮在定义各自的响应后,用户在点击这些按钮时,会做出相应的处理,启动对应的进程。4.2功能模块实现4.2.1连接服务器客户端中FtpBean类中connect方法用来实现连接服务

33、器功能,在Java中实现这一功能是借助FtpClient类完成的,首先是使用FtpClient类的openServer(stringserver)方法打开远程FTP服务器,然后使用FtpClient类的login(user,password)方法登录服务器。登录远程FTP服务器有两种方式,一种是注册用户登录,另一种是以匿名方式登录。使用第一种方式登录需要拥有该服务器的注册用户名和密码,匿名方式则是以designpattern作为用户名来登录。类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法1.openServer(Stringhostname)用于建立一条与指定主机上

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

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

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

37、行测试为了验证程序是否能正常运行,我选择连接IP为122.206.79.129的FTP服务器来测试。运行环境为windows7+eclipse。首先是服务器连接的验证:在服务器地址中输入122.206.79.129,在用户名中输入designpattern,在密码栏中输入designpattern,点击连接按钮后,出现结果如下图:结果显示连接功能实现,服务器文件信息列表中显示了ip为122.206.79.129的FTP服务器下的文件夹列表,信息显示中显示了正确的连接信息。然后是下载文件功能的测试,选择程序设计模式封页.doc文件,点击下载选择保存至D盘,如图:继续点击保存按钮,下载任务中成功添

38、加下载任务,文件下载完后,如图: 最后是上传功能测试。先在本机上创建一个名叫“程序设计模式封页.doc”的文件,选择上传至跟目录下,点击上传,显示如图:为了验证是否真的上传至FTP服务器,我用网上邻居访问了IP为122.206.79.129的FTP服务器,结果如图:文件确实上传成功。至此,功能验证已经完毕!6 .结语 FTP的目标是提高文件的共享性和可靠高效地传送数据,而FTP客户端的作用是使用户方便的连接和访问FTP服务器。本文实现了一个简单易用的FTP客户端,在分析FTP协议的基本工作原理和FTP的数据传输原理的基础上,详细介绍了如何使用Java工具对FTP客户端进行设计,选择Java类库

39、来实现FTP客户端程序的上传下载等主要功能,并用eclipse软件提供的一个支持可视化编程的开发环境,从而实现了对FTP客户端的开发。虽然现在有很多实现FTP客户端程序的技术和方法,诸如Winsock控件和Delphi的Indy组件等,但是使用Java在程序实现上显得更加简捷灵活,并具有较好的可扩充性和可移植性,在本文中使用的方法也是比较便捷和高效的。参考文献1杨锡林、张燕等.Java编程高手.北京大学出版社,2000年12月第一版(1):169173.2叶新铭等译.计算机网络(原书第二版).机械工业出版社,2001年6月 :端到端协议242-283.3夏先波等.JAVA+JDK实例开发宝典.

40、电子工业出版社,2001年第一版:第13章.网络编程281289.4 J. Reynolds. RequestforComments:959:FileTransferProtocol,October1985 ,:THEFTPMODEL78.5叶俊民.软件工程.清华大学出版社,2006年6月第一版:第3章.软件需求分析基础5173.6Horstmann,C.S,Cornell,G.Java2核心技术.机械工业出版社,2006年3月第一版:第6章.高级Swing2793857 杨淑萍 基于Java的FTP客户端程序的设计与实现 .现代计算机.8 谢希仁 计算机网络(第五版) 电子工业出版社附录:程

41、序源码 ,主要核心代码:FTPFrame.javapublic void connect()/连接FTP服务器String s=ftp.connect(/, url.getText().toString(), Integer.parseInt(port.getText(), username.getText().toString(), password.getText().toString();status.setText(s);update();if(s.equals(Success)time = new Date();out.println(time+ 登陆服务器:+url.getText

42、();connectButton.setEnabled(false);closeButton.setEnabled(true);elseJOptionPane.showMessageDialog(null, s);connectButton.setEnabled(true);closeButton.setEnabled(false);public void uploadFile()/上传文件JFileChooser fDialog=new JFileChooser(); /文件选择器int result=fDialog.showOpenDialog(null);if(result=JFileC

43、hooser.APPROVE_OPTION)String file=fDialog.getSelectedFile().toString();String targetFile=new String();StringTokenizer st=new StringTokenizer(file,);/拆分文件名while(st.hasMoreTokens()targetFile=st.nextToken();boolean b=ftp.uploadFile(file,targetFile);if(b=true)update();status.setText(上传文件+targetFile+成功);

44、JOptionPane.showMessageDialog(null, 上传文件+targetFile+成功);time = new Date();out.println(time+ 上传文件:+targetFile+成功);elsestatus.setText(上传文件+targetFile+失败);JOptionPane.showMessageDialog(null, 上传文件+targetFile+失败);out.println(time+ 上传文件:+targetFile+失败); public void downloadFile()/下载文件if(!fileList.isSelect

45、ionEmpty()String targetFile=fileList.getSelectedValue().toString();/获取所选择的文件JFileChooser fDialog=new JFileChooser(); /文件选择器int result=fDialog.showOpenDialog(null);if(result=JFileChooser.APPROVE_OPTION) ftp.downloadFile(targetFile, fDialog.getSelectedFile().toString(); update(); status.setText(下载文件+t

46、argetFile+成功); JOptionPane.showMessageDialog(null, 下载文件+targetFile+成功); time = new Date(); out.println(time+ 下载文件:+targetFile); elseJOptionPane.showMessageDialog(null, 请选择所要下载的文件); public void close()/关闭连接 String s=ftp.close();status.setText(s);m.removeAllElements();time = new Date();out.println(tim

47、e+ 离开服务器:+url.getText();out.close();connectButton.setEnabled(true);closeButton.setEnabled(false);FtpBean.java /打开连接 public String connect(String dir, String hostname, int port, String username,String passwd) String msg = ; try ftpClient = new FtpClient(hostname, port); ftpClient.login(username, pass

48、wd); ftpClient.binary(); msg = Success; catch (FtpLoginException e) msg = 登录主机失败,可能是用户名密码错误!; ftpClient=null; catch (IOException e) msg = 登录主机失败,请检验端品是否正确!; ftpClient=null; catch (SecurityException e) msg = 无权连接主机,主确认是否有权限连接主机!; ftpClient=null; return msg; /上传文件 public boolean uploadFile(String loca

49、lFile, String targetFileName) boolean result = false; if (this.ftpClient = null) return false; TelnetOutputStream tos = null; RandomAccessFile sendFile = null; DataOutputStream dos = null; try File file = new File(localFile); sendFile = new RandomAccessFile(file, r); sendFile.seek(0); tos = this.ftp

50、Client.put(targetFileName); dos = new DataOutputStream(tos); int ch = 0; while (sendFile.getFilePointer() sendFile.length() ch = sendFile.read(); dos.write(ch); result = true; catch (Exception ex) result = false; finally if (tos != null) try tos.close(); catch (IOException e) e.printStackTrace(); if (dos != null) try dos.close(); catch (IOException e) e.printStackTrace(); if (sendFile != null) try sendFile.close(); catch (IOException e) e.printStackTrace(); return result; /下载文件 public boolean downloadF

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!