Java课程设计FTP客户端说明书.docx

上传人:b****2 文档编号:23549354 上传时间:2023-05-18 格式:DOCX 页数:67 大小:617.38KB
下载 相关 举报
Java课程设计FTP客户端说明书.docx_第1页
第1页 / 共67页
Java课程设计FTP客户端说明书.docx_第2页
第2页 / 共67页
Java课程设计FTP客户端说明书.docx_第3页
第3页 / 共67页
Java课程设计FTP客户端说明书.docx_第4页
第4页 / 共67页
Java课程设计FTP客户端说明书.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

Java课程设计FTP客户端说明书.docx

《Java课程设计FTP客户端说明书.docx》由会员分享,可在线阅读,更多相关《Java课程设计FTP客户端说明书.docx(67页珍藏版)》请在冰豆网上搜索。

Java课程设计FTP客户端说明书.docx

Java课程设计FTP客户端说明书

 

摘要

FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。

用FTP将信息下载到本地是一件十分普遍的事。

也随之出现了许多下载软件。

尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。

如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作。

FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。

FTP是Internet上用来传送文件的协议。

它是为了我们能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。

通过FTP协议,我们就可以跟Internet上的FTP服务器进行文件的上传或下载。

本文以实现一个简单易用的FTP客户端为目标,通过分析FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用Java工具对FTP客户端进行设计,选择Java类库中的ftpclient类来实现FTP客户端程序的上传下载等主要功能。

关键字:

Ftp客户端、FTP协议、工作原理、上传下载

 

引言

目前,FTP服务已经是网络上广泛使用的一种服务了,它是建立在FTP协议上的用于网络环境下进行文件传输的一种文件传输系统,几乎可以传输各种类型的文件,如文本文件,声音文件,图像文件等。

一个文件传输系统有服务器端程序和客户端程序共同组成的,客户端程序提供用户操作的界面并完成文件的上传和下载。

在网络应用中,FTP有着非常重要的地位,在Internet中一个十分重要的就是资源,而各种各样的资源大多数都是放在FTP服务器中的,为了获得这些资源,我们必须使用FTP客户端软件。

目前流行的有cuteFTP,WS_FTP,ByteCatcher,FTPVoyage等。

为了方便用户的使用,本文将介绍一种基于Java的FTP客户端程序的设计与实现。

本文所设计的FTP客户端,利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧,可以根据服务器IP、用户名、密码和端口号登录指定的FTP服务器,可以查看服务器内容列表,下载选定的文件,重命名或删除指定的文件/文件夹,也可以把本地文件上传到服务器上。

适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。

1、课题描述

文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是Internet使用最广泛的协议之一。

现如今FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP客户端。

虽然平时使用windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙的FTP客户端。

IE浏览器在6.0以下的版本不支持PASV方式访问服务器,而且IE浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。

现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多数用户并不习惯使用这些软件。

本文首先分析了FTP协议,FTP的工作原理等,然后介绍了如何使用Java工具来设计和实现一个简单的FTP客户端。

使用本FTP客户端,可以使用户轻松的下载、上传网络资源。

用户对象是需要对文件传输要求使用简便,希望可操作性强的广大网上用户。

2、程序运行环境与系统结构

此次课设的“FTP客户端”是基于Java编程语言在Eclipse下开发的文件传输软件,正常使用该软件您务必保证您的电脑配置满足如下要求:

1)运行平台(硬件环境):

Windows7旗舰版

2)系统开发平台:

Eclipse

3)系统开发语言:

Java

4)JDK:

jdk1.6.0_18

5)有相对应的FTP服务器

或者您有更加适合的运行环境会更好!

本次课设的FTP客户端是在Windows7(旗舰版)+Eclipse+jdk1.6.0_18下使用Java编程语言进行开发,并与一个FTP服务器QuickEasyFTPServer一起使用的。

3、FTP客户端特点

FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。

用FTP将信息下载到本地是一件十分普遍的事。

也随之出现了许多下载软件。

尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。

如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作。

FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。

传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度的交互性,高效的用户界面等优点.

且采用Java编程语言进行开发。

Java编程语言的主要特性是个简单、面向对象、分布式解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

第1章项目分析

文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。

FTP的目标是提高文件的共享性和可靠高效地传送数据。

在传输文件时,FTP客户端程序先与服务器建立连接,然后向服务器发送命令。

服务器收到命令后给予响应,并执行命令。

FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。

相比其他协议,如HTTP协议,FTP协议要复杂一些。

与一般的C/S应用不同点在于一般的C/S应用程序一般只会建立一个Socket连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。

而FTP协议中将命令与数据分开传送的方法提高了效率。

1.1问题描述

编写一个FTP客户端软件,该系统能够执行FTP的常用命令,能够完成FTP的基本操作,支持FTP的主要特性。

要求采用图形用户界面,不得使用现成的FTP组件。

即:

1.实现一个图形用户界面的FTP客户端,保证文件的安全传输和存储。

2.通过输入服务器地址、用户名和密码、可以实现FTP主机的登录。

3.提供本地文件的上传功能,可对FTP主机文件进行下载、上传、删除、重命名等文件操作。

1.2FTP协议分析

1.2.1FTP的工作原理

FTP(FileTransferProtocol),是文件传输协议的简称。

用于Internet上的控制文件的双向传输。

同时,它也是一个应用程序。

用户可以通过它把自己机器与世界各地所有运行FTP协议的服务器相连,访问服务器上的资源和信息。

FTP协议在TCP/IP协议栈中的位置如表1:

表1TCP/IP协议栈

HTTPFTPTELNSMTPDNSTFTPNMP

应用层

TCPUDP

传输层

IP

互联网络层

X25ISDNLANWLANFDDIATM

网络接口层

当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:

一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。

另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。

FTP采用“客户端/服务器”(C/S)方式,用户要在自己的本地计算机上安装FTP客户端程序。

从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。

FTP协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。

使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。

但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。

但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。

用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。

现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。

出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。

也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。

另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。

匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。

人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。

1.2.2FTP工作模式

FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。

通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。

即客户端只需要连接一个端口进行数据通信。

如TELNET的默认端口是23,用户从头到尾都只需使用这个端口。

但是FTP通信除了有一个默认端口21之外,还需要其他的端口。

其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。

至于非标准端口的产生则要根据用户选择的连接模式而定:

如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。

而在此次课设中我采用的就是主动模式。

下表是几个著名的TCP端口号:

表2TCP端口号

TCP端口号

关键字

描述

20

FTP-DATA

文件传输协议数据

21

FTP

文件传输协议控制

23

TELENET

远程登录协议

25

SMTP

简单邮件传输协议

53

DOMAIN

域名服务器

80

HTTP

超文本传输协议

110

POP3

邮局协议

119

NNTP

新闻传送协议

FTP中字节大小有两个:

逻辑字节大小和用于传输的字节大小。

后者通常是8位,而前者可不一定是多少了。

传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。

控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。

数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间,FTP可以传输非连续的文件,这些文件的一部分称为页。

服务器DTP代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。

当然,DTP也可以转入“被动”状态。

服务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。

至于用户FTP进程则是由PI,DTP和用户接口组成的。

具体工作模式如图1所示:

FTP请求

FTP响应

 

数据连接

 

服务器-FTP用户—FTP

图1FTP工作模式图

上图中用户PI开始控制连接,控制连接与Telnet协议很象。

在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。

服务器PI向用户PI返回标准应答。

FTP命令指定数据连接参数和文件系统操作。

用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。

数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。

1.2.3FTP传输模式

FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。

假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。

每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。

FTP的传输有两种方式:

ASCII传输模式和二进制数据传输模式。

1.2.3.1ASCII传输方式

假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。

在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理。

1.2.3.2二进制传输方式

在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。

即使目的地机器上包含位序列的文件是没意义的。

例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。

这会使传输稍微变慢,也会损坏数据,使文件变得不能用。

如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

1.3工程进度计划

2015-3-12至2015-3-21:

需求分析阶段

2015-3-21至2015-3-22:

设计界面阶段

2015-3-22至2015-3-26:

编码阶段

2015-3-26至2015-4-1:

测试阶段

2015-3-29至2015-4-2:

文档编写阶段

1.4一个完整系统项目分析

(1)项目任务的主要内容和要求:

遵循FTP协议,实现一个FTP的客户端程序,根据服务器IP、用户名、密码和端口号登录指定的FTP服务器,可以查看服务器内容列表,下载选定的文件,重命名或删除指定的文件/文件夹,也可以把本地文件上传到服务器上。

(2)项目设计(研究)思路:

FTP客户端可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。

FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理。

但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。

FTP服务一般运行在20和21两个端口。

端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。

当数据通过数据流传输时,控制流处于空闲状态。

而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。

根据要求分析,对其所要实现的功能进行划分实现,首先要完成主机与服务器之间的连接与关闭操作。

其次主要完成文件的显示、新建文件、删除文件等。

然后要完成主机与服务器连接成功以后文件的上传与下载。

最后要是保存一些登录信息和一些简单的配置信息。

(3)具体成果形式和要求

FTP客户端主要目标是:

促进文件的共享(计算机程序或数据);鼓励间接或者隐式的使用远程计算机;向用户屏蔽不同主机中各种文件存储系统的细节;可靠和高效的传输数据。

要求根据账号和密码登录指定的FTP服务器,可以查看服务器内容列表,下载选定的文件,重命名或删除指定的文件/文件夹,也可以把本地文件上传到服务器上。

第2章系统分析与设计

2.1系统分析

FTP客户端作为用户连接FTP服务器的工具,需要具备一些基本功能模块,如连接、上传、下载等,其中最主要的三大功能模块如下:

1、下载功能模块:

连接用户指定的FTP服务器,获取服务器目录下的文件列表,

当用户选择项目为文件时,点击下载可以下载用户所需要的文件。

选定文件后提示用户将文件存储在何处,用户选择存储区后开始下载任务。

依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件,通过FTP客户端进行下载。

2、上传功能模块:

用户可以自行选择本机上存储的文件,上传至FTP服务器。

在用户选择存储在服务器的位置后,点击上传,选择所需要上传的文件,即可将文件上传至服务器。

3、连接功能模块:

将用户本机与指定的IP地址连接,验证用户名和密码,在FTP服务器上进行注册。

有了这三个基本的功能模块,客户端的基本应用功能即可实现。

2.1.1设计工具

程序设计中用到的主要语言就是Java,Java是SUN公司开发的一种面向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。

Java摒弃了C++中各种弊大于利的功能和许多很少用到的功能,用Java开发的程序可以在网络上传输,并运行于任何客户机上。

使用Java语言可以方便的设计出网络应用类的程序,而且Java的移植性很好,在、其应用程序在各种机器上都能无差别的执行为了使FTP客户端能适应大多数平台下的使用,我选择使用Java语言在Eclipse下来实现。

2.1.2系统模型设计

 

图2.2FTP的基本模型

2.1.3系统工作流程设计

 

2.1.4客户端连接流程图

发送用户名及

密码至服务器

 

图1客户端连接流程图

 

连接的结果有两种,即图中显示的连接失败和连接成功。

2.1.5上传子模块流程图

用户可以选择需要上传的文件,并指定上传位置,当用户点击上传后,将本机上的文件上传至FTP服务器。

下图为上传子模块流程图。

 

 

否重新获取服务器文件列表

 

图4上传模块流程图

上传的结果有两种,上传失败和成功,失败时会提示用户上传失败,原因可能是权限,如果成功上传,则提示上传成功。

2.1.6下载子模块流程图

当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上

的存储位置,将服务器上的文件下载至本机。

下图为上传子模块流程图。

 

 

选择文件在本机存储位置

 

将信息传送至任务

 

否重新获取服务器文件列表

 

图5下载模块流程图

2.2系统设计

在软件开发时期,设计阶段是富有活力和最需要发挥创造力的阶段。

设计的目标,是细化解决方案的可视化设计模式,确保设计模型终能平滑的过度到程序代码。

设计的任务就是把分析阶段产生分析模型转换为用适当手段表示的软件设计模型。

2.2.1数据输入模块详细设计

该界面用来记录用来输入服务器的站点,用户名和密码信息,然后将信息发送到

服务器进行验证,利用Jtextfiled构件来实现。

客户端一共有4个文本输入框,分别为服务器地址输入框url,用户名输入框username,密码输入框password和端口号port。

在程序运行时,用户在输入框url中输入的FTP服务器站点、用户在输入框username中输入的用户名、用户在输入框password中输入密码,用户在端口号输入框port中输入端口号。

利用getText()函数获取输入框中的数据。

JTextField类的定义:

privateJTextFieldurl=newJTextField();//FTP服务器地址

privateJTextFieldport=newJTextField();//FTP服务器端口

privateJTextFieldusername=newJTextField();//用户名

privateJTextFieldpassword=newJTextField();//密码

2.2.2文件信息显示界面详细设计

该界面的作用是是显示服务器文件列表,利用Jscrollpane构件来实现。

在客户

端主界面创建一个Jscrollpane,命名为fileScrollPane,并置于主界面中间。

JScrollPane类的定义:

JScrollPanefileScrollPane;

fileScrollPane=newJScrollPane(fileList,

JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

fileScrollPane.setPreferredSize(newDimension(300,400));

2.2.3操作模块详细设计

操作的实现使用JMenuItem和JPopupMenu构件实现,客户端共有刷新、删除、上传、下载、上一级目、重命名、显示日志信息等7个操作,分别命名为refresh、delete、download、upload、rename、upDir和showLog。

JMenuItem类的定义:

privateJPopupMenupopup=newJPopupMenu();//建立一个弹出式菜单

privateJMenuItemrefresh=newJMenuItem("刷新");//右键弹出菜单

privateJMenuItemdelete=newJMenuItem("删除");

privateJMenuItemdownload=newJMenuItem("下载");

privateJMenuItemupload=newJMenuItem("上传");

privateJMenuItemrename=newJMenuItem("重命名");

privateJMenuItemupDir=newJMenuItem("上级目录");

privateJMenuItemshowLog=newJMenuItem("显示日志信息");

每个操作都有自己的方法来实现各自的功能,分别如下

连接:

publicStringconnect(Stringdir,Stringhostname,intport,Stringusername,Stringpasswd)

上传:

uploadFile(StringlocalFile,StringtargetFileName)

下载:

downloadFile(StringsrcFileName,StringtargetFileName)

删除:

deleteFile(StringfileName)

断开:

close()

上一级目录:

upDir()

刷新:

update()

重命名:

renameFile(StringoldName,StringnewName)

2.3具体功能模块实现

使用SUN公司提供的FTP客户端类库。

主要包括4个类:

.TelnetInputStream

sun.n

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

当前位置:首页 > 工程科技 > 能源化工

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

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