FTP客户端软件的设计与实现.docx

上传人:b****5 文档编号:28725209 上传时间:2023-07-19 格式:DOCX 页数:22 大小:147.92KB
下载 相关 举报
FTP客户端软件的设计与实现.docx_第1页
第1页 / 共22页
FTP客户端软件的设计与实现.docx_第2页
第2页 / 共22页
FTP客户端软件的设计与实现.docx_第3页
第3页 / 共22页
FTP客户端软件的设计与实现.docx_第4页
第4页 / 共22页
FTP客户端软件的设计与实现.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

FTP客户端软件的设计与实现.docx

《FTP客户端软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《FTP客户端软件的设计与实现.docx(22页珍藏版)》请在冰豆网上搜索。

FTP客户端软件的设计与实现.docx

FTP客户端软件的设计与实现

FTP客户端软件的设计与实现

摘要

文件传输协议(FileTransferProtocol,FTP),它是目前Internet上使用得最广泛的文件传送协议。

起初,FTP并不是应用于IP网络上的协议,而是20世纪60~80年代美国国防部组建的ARPANET网络中,用于计算机间的文件传输的协议。

时至今日,FTP仍然保持其可靠性,高速地传输文件,它还允许文件远程存取。

这使得用户可以在某个系统上工作,而将文件存贮在别的系统。

为了用户更方便的使用FTP服务,提供更好的人机交互界面,本课题将使用JAVA以及JBuilder的ftpclient库,基于Client/Server的架构方式,编写一个友善界面的FTP客户端工具,实现服务器连接、远程与本地目录浏览、文件上传和下载等基本FTP工具常用功能。

关键词:

FTP;上传;下载

TheDesignandImplementationofFTPClient

Abstract

FileTransferProtocol(FTP),whichisthemostwidelyusedprotocolfortransmissionatpresent.Inthebeginning,theFTPisnotusedontheIPnetwork,butusedintheUnitedStatesDepartmentofDefensenetworkforthecomputerfiletransferagreementinthe1960'sto1980's.Today,FTPismaintainingitsreliability,high-speedtransmissionofdocuments,italsoallowsremoteaccesstodocuments,Userscanmanipulatedatainotherdifferentsystem,tomakeusersmoreconvenientuseFTPservices,haveabetterman-machineinterface,thissystemwillbewrittenbyJava,JBuilder,andtheftpclientlibrary.BasingonClient/Serverstructures,toprepareaFTPclienttoolwithafriendlyinterface,itcanlogintotheserver,browseremoteandlocaldirectory,uploadanddownload.

Keywords:

FTP;Upload;Download

目录

论文总页数:

20页

1引言1

1.1选题背景1

1.2选题目的1

2相关基础技术与开发平台1

2.1JAVA技术1

2.1.1JAVA简介1

2.1.2C/S架构简介2

2.2FTP基础3

2.3开发平台4

3系统需求分析与总体设计4

3.1需求分析4

3.2设计思路5

3.3实现思路5

4系统模块的实现7

4.1界面模块实现7

4.2登录模块实现8

4.3浏览程序10

4.3.1浏览服务器端目录程序10

4.3.2本地浏览程序12

4.4文件下载和上传程序13

4.4.1文件下载程序13

4.4.2文件上传程序13

5系统测试及问题处理15

5.1测试环境15

5.2测试结果15

5.2.1登录模块测试15

5.2.2系统兼容性测试16

5.3测试总结16

结论17

参考文献18

致谢19

声明20

1引言

1.1选题背景

FTP是互联网上使用最广泛的文件传输协议。

在互联网早期曾占据整个互联网通信量的三分之一。

它主要解决了在不同操作系统下处理文件格式的不兼容性。

FTP客户端应该包含以下功能:

登录,浏览目录,上传下载。

传统方式需要在DOS下输入命令,对于普通用户是件极困难的事。

但有了FTP客户端软件后,只要轻点几下鼠标即可完成所有操作。

它已成为人们不可或缺的软件之一了。

本毕业设计将介绍FTP客户端系统的设计和开发工作,因此,文章将涵盖以下三个方面的内容:

1.基础技术知识介绍;2.文件传输系统的详细需求;3.介绍系统的具体实现;4.对最终系统进行测试。

通过这次课题,对整个开发过程有深入的了解,提高实践能力。

FTP将在未来的很长时间里作为主要的文件传输协议,使用前景仍然宽广,功能会更加强大。

1.2选题目的

FTP是Internet上使用最广泛、是共享资源的主要途径之一。

FTP服务是以它所使用的文件传输协议(FileTransferProtocol)命名的。

它的特点是访问方便,操作简单,易于管理。

如今Internet上有许多的资源都是以FTP的形式提供的,包括各种文档、软件工具包等等。

选择此课题作为毕业设计,是希望将平日学习累积的知识用于实践,开发出该系统的各项功能,使用户很简单的就能登录FTP服务器、上传下载数据等功能的需求。

与此同时,在开发中学会发现解决问题,提高JAVA开发能力,为今后的工作、学习、项目开发累积实践经验。

所以选择了Java语言来开发实现文件传输功能的FTP客户端。

2相关基础技术与开发平台

综合个人平日学习内容和语言掌握的熟练度情况,选用了JAVA作为该系统的编程语言,JBuilder9作为开发的平台。

系统界面模块可以使用Swing、AWT,制作出其GUI部分。

2.1JAVA技术

2.1.1JAVA简介

Java是Sun公司推出的一种编程语言。

Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型,高度抽象,采用纯面向对象编程的思想和方法。

Java还带有很多的扩展的类包(Package),在程序中可以轻松调用,简化程序员的工作。

Java程序运行的硬件或软件环境,称为平台。

Java平台包括2个部分:

Java虚拟机和Java应用程序接口。

JavaAPI:

Java应用程序接口,用于Java程序的使用和Java虚拟机的接口。

Java虚拟机用于将Java字节码翻译成特定机器码。

基于硬件的平台,即Java程序运行的特定的硬件环境。

图1JAVA平台

2.1.2C/S架构简介

客户机/服务器在分布处理过程中,使用基于连接的网络通信模式。

该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。

客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。

这就是典型的“请求--应答”模式。

下面是客户机/服务器的一个典型运作过程:

 

(1)服务器监听相应端口的输入;

(2)客户机发出一个请求;

(3)服务器接收到此请求; 

(4)服务器处理这个请求,并把结果返回给客户机;

(5)上述过程,直至完成一次会话过程。

图22层C/S结构图

2.2FTP基础

文件传送协议FTP(FileTransferProtocol)是Internet文件传送的基础。

通过该协议,用户可以从一个Internet主机向另一个Internet主机拷贝文件。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。

用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。

用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。

比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。

客户机程序代表用户接收到这个文件,将其存放在用户目录中。

在FTP的使用当中,用户经常遇到两个概念:

下载(Download)和上载(Upload)。

“下载”文件就是从远程主机拷贝文件至自己的计算机上;“上载”文件就是将文件从自己的计算机中拷贝至远程主机上。

用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。

图3系统工作简易流程

FTP客户端设计的原理,FTP使用两条TCP连接来完成文件传输:

控制连接与数据连接。

控制连接用于传输控制,数据连接用于数据输送。

在服务器启动后,服务器就会在端口21等待客户的连接请求,有用户需要传输文件时,客户与服务器的端口21建立一个控制连接,用来传送客户的命令和服务器的应答,该连接一直保持到客户与服务器通信结束为当客户发出数据传输命令时,服务器会主动与客户建立数据连接,并与其进行数据交换。

客户端用户并不直接处理控制连接上的FTP命令和FTP响应,而是由两个协议解释器进行处理。

用户接口为客户端用户提供一定形式的输入界面,接收用户的命令,将其转换成标准的FTP命令,最终将控制连接上的FTP响应转换成用户可理解的方式。

在客户与服务器的整个连接期间,控制连接必须保持,而数据连接却可以根据请求动态地建立和关闭。

在最常用的流模式中,文件结束是用数据连接的关闭来表示的,换句话说,每传输一个文件或文件列表,系统就会再建立一个新的数据连接。

图4FTP使用的两个TCP连接

2.3开发平台

本文件传输系统是采用Borland公司公司推出的JBuilder作为开发平台,它是一款优秀的JavaIDE集成开发环境工具,JBuilder9是目前的较新的版本它比以前的版本更加简单和直观,方便上手在这个版本中Borland集成目前众多JAVA开发的优秀技术,如:

工程管理、单元测试、代码审查、撰写Javadoc说明文档等等,极大的方便了Java开发人员的工作。

如果用户既要求易于进行可视化布局,又要求有较大的灵活性,JBuilder就是最好的选择。

3系统需求分析与总体设计

3.1需求分析

3.1.1用户需求

软件要简单易上手,能够匿名或者使用帐号登录到用户指定的服务器上,进行访问和数据的上传下载。

3.1.2功能需求

该系统主要包括以下几个方面:

1.可视化的交互界面模块;2.登录服务器模块;3.浏览服务器/本地目录和文件模块;4.上传/下载文件模块。

由这四个模块构成该系统。

3.1.3性能需求:

整个系统操作应当简便,界面友好,运行稳定,执行速度快。

系统本身运行对计算机硬件平台和操作系统平台要求适中。

3.2设计思路

上传下载程序主要完成文件的传输,是系统的核心模块。

Jbuilder9提供的FTP控件已经对其进行了类封装,因而对用户而言它是透明的,不必再去编程解释响应消息等,这就是控件的好处。

这样使用JBuilder9,就节约了大量的开发时间。

即使对FTP不是很了解,都可以很快建立起一个FTP客户端程序来。

由于本程序只是FTP客户端,下面将分别对整个系统的图形界面、登录模块、远程浏览模块、本地浏览模块、上传模块和下载模块六大模块的程序实现细节进行详细介绍。

图5系统模块图

3.3实现思路

在Jbuilder9环境所提供的扩展包中,已经提供了一些网络类的类库——.ftp.FtpClient.,该类库主要用于建立FTP连接的类。

利用此类的方法,我们可以远程登录到FTP服务器,列出该服务器上的目录,设置传输协议,以及传送文件。

FtpClient类涵盖了几乎所有FTP的功能,FtpClient的实例变量保存了有关建立"代理"的各种信息。

当然,还有很多此类开源的库,可以实现FTP的功能。

这里我采用了FtpClient作为此次毕业设计的资源。

以下是部分FtpClient的常用核心函数说明:

FtpClient有三种不同形式的构造函数,此构造函数将创建一FtpClient类,但不建立FTP连接。

如下:

1.publicFtpClient(Stringhostname,intport)

此构造函数利用给出的主机名和端口号建立一条FTP连接。

2.publicFtpClient(Stringhostname)

此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。

3.FtpClient()

一旦建立了类FtpClient,FTP连接可以用openServer方法建立,这个类的方法来打开与FTP服务器的连接。

类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法。

1.publicvoidopenServer(Stringhostname)

此方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口号。

2.publicvoidopenServer(Stringhost,intport)

此方法用于建立一条与指定主机、指定端口上的FTP服务器的连接。

打开连接之后,接下来的工作是注册到FTP服务器。

这时需要利用下面的方法。

此方法利用参数username和password登录到FTP服务器。

publicvoidlogin(Stringusername,Stringpassword)

下面是FtpClient类所提供的一些控制命令。

publicvoidcd(StringremoteDirectory)

该命令用于把远程系统上的目录切换到remoteDirectory所指定的目录。

publicvoidcdUp():

该命令用于把远程系统上的目录切换到上一级目录。

publicStringpwd():

该命令可显示远程系统上的目录状态。

publicvoidbinary():

该命令可把传输格式设置为二进制格式。

此外,类FtpClient还提供了可用于传递并检索目录清单和文件的若干方法。

这些方法返回的是可供读或写的输入、输出流。

下面是其中一些主要的方法。

publicTelnetInputStreamlist()

返回与远程机器上当前目录相对应的输入流。

publicTelnetInputStreamget(Stringfilename)

获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。

publicTelnetOutputStreamput(Stringfilename)

以写方式打开一输出流,通过这一输出流把文件filename传送到远程计算机。

4系统模块的实现

4.1界面模块实现

Java是一个面向对象的程序语言,它使用了很多对象,在JBuilder9中使用的是JDK库(awt,swing),它提供了很多的界面对象,可以很直观的看到设计的界面。

文件处理界面的设计是在jPanel2的基础上实现的,增加了一些其他控件。

它是由三大部分组成:

FTP服务器列表,本地主机列表,操作时信息列表。

还有三个按钮:

上传,下载,选择目录下个命令按钮。

public class Frame1 extends JFrame {

 private JPanel contentPane;

 private JTextField jTextField1 = new JTextField();

 private JTextField jTextField2 = new JTextField();

 private JTextField jTextField3 = new JTextField();

 private JCheckBox jCheckbox1 = new JCheckBox();

 FtpClient ftp=null;

 JTabbedPane jTabbedPane1 = new JTabbedPane();

 JPanel jPanel1 = new JPanel();

 JPanel jPanel2 = new JPanel();

 PaneLayout paneLayout1 = new PaneLayout();

 XYLayout xYLayout1 = new XYLayout();

 JLabel jLabel1 = new JLabel();

 JLabel jLabel2 = new JLabel();

 JLabel jLabel3 = new JLabel();

 JTextField jTextField4 = new JTextField();

 JLabel jLabel4 = new JLabel();

 BorderLayout borderLayout1 = new BorderLayout();

 Box box1;

 JPanel jPanel3 = new JPanel();

 JPanel jPanel4 = new JPanel();

 XYLayout xYLayout2 = new XYLayout();

 BorderLayout borderLayout2 = new BorderLayout();

 jscrollPane jscrollPane1 = new jscrollPane();

 JButton jButton3 = new JButton();

 JButton jButton4 = new JButton();

 jscrollPane jscrollPane2 = new jscrollPane();

 //定义树节点,模型和树视图

 DefaultMutableTreeNode root1 = new DefaultMutableTreeNode("目录中没有文件");

 DefaultTreeModel model1 = new DefaultTreeModel(root1);

 JTree jTree1 = new JTree(model1);

 JButton jButton5 = new JButton();

 JLabel statusLabel = new JLabel();

 List list1 = new List();

 jscrollPane jscrollPane3 = new jscrollPane();

 JTextArea jTextArea1 = new JTextArea();

 JButton jButton1 = new JButton();

 JButton jButton2 = new JButton();

 JLabel jLabel5 = new JLabel();

 JLabel jLabel6 = new JLabel();

}

图6浏览及操作界面

4.2登录模块实现

一般的使用办法是,直接使用构造方法创建一个FtpClient类对象(如果在构造FtpClient类对象时没有设置参数,则可以使用openServer方法来打开服务器端口),然后使用login方法来登录,并进行用户认证。

以下是登录程序代码:

//功能:

登录连接到FTP服务器。

voidjButton1_actionPerformed(ActionEvente){

 intch;

 Stringhostname=jTextField1.getText();

 //如果已经打开了FTP服务器,则先关闭FTP文件服务器

 try{

  if(ftp!

=null)ftp.closeServer();

 }

 catch(IOExceptionex){

  ex.printStackTrace();

 }

 //连接到服务器

 try{

  statusLabel.setText("正在连接,请等待.....");

  ftp=newFtpClient(hostname);

  //登录Ftp服务器

  ftp.login(jTextField2.getText(),jTextField3.getText());

  //使用二进制协议

  ftp.binary();

 }

 catch(FtpLoginExceptionex){

  //没有主机的登录权限

  statusLabel.setText("无权限与主机:

"+hostname+"连接!

");

 }

 catch(IOExceptionex){

  //连接主机失败

  statusLabel.setText("连接主机:

"+hostname+"失败!

");

 }

 catch(SecurityExceptionex)

 {

  //用户或者密码可能不对

  statusLabel.setText("用户或者密码可能不对,无权限与主机:

"+hostname+"连接!

");

 }

 //连接成功后的显示

 statusLabel.setText("连接主机:

"+hostname+"成功!

");

 //列表框需要重新刷新

 ReloadList();

}

图7登录界面

4.3浏览程序

我们利用FtpClient控件可以实现FTP客户端应用程序的浏览功能,浏览功能的实现程序由浏览服务器端文件和浏览本地文件两部分组成。

4.3.1浏览服务器端目录程序

当连接登录成功之后,可使用FtpClient控件的List()方法执行FTP服务器端上的目录浏览(List)功能,以取得FTP服务器默认的目录内容。

一般List方法会列出FTP端目录与文件的详细内容,包括创建文件日期,文件大小,目录与文件的名称等相关信息。

当然,FTP服务器端必须开放目录读取的权限,以允许连接登录及浏览目录,否则,Connect方法会执行失败。

而这个方法执行后的结果是TelnetInputStream数据流,本系统要把它显示在一个列表框中,还需要进行分解操作。

下面是对列表框进行操作的程序代码:

//清空目录列表,调用List()方法获取文件列表。

private void ReloadList(){

 StringBuffer buf=new StringBuffer();

 int ch;

  list1.removeAll();//清空目录列表

 try {

  //调用List()方法得到目录表

  TelnetInputStream t = ftp.list();

  t.setStickyCRLF(true);

  //分解TelnetInputStream数据流

  while ( (ch = t.read()) >= 0) {

   if (ch == '\n') {

    //向列表框添加分解得到的目录和文件

    list1.add(getDIR(buf.toString()));

    buf.setLength(0);

   }

   else {

    buf.append( (char) ch);

   }

  }

  //完成后关闭TelnetInputStream数据流

  t.close();

 }

 catch (IOException ex) {

  ex.printStackTrace();

 }

 //刷新列表框的内容

 list1.validate();

}

}

// 分解字符串得到目录和文件名

public String getDIR(String 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1