资源描述
摘要
网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用客户服务器方式。本课题就是设计一个FTP服务器程序和一个FTP客户端程序。
本文通过软件工程学的方法完成对FTP服务器程序和客户端程序的设计以及具体的实现,设计步骤采用自顶向下的方法。描述了需求分析,总体设计,详细设计等内容,并对程序系统的实现做出了详细的介绍。本文所实现的FTP程序基本符合编程规范,主要具备完成FTP连接的打开和关闭操作;能执行文件的上传和下载;能完成用户的登陆判断;目录的跳转以及文件目录的输出几个功能。
关键词 服务器;系统设计;软件工程
ABSTRACT
One basic application of Internet environment is to copy documents from one computer to another distant one, while the File Transfer Protocol (FTP) is the most widely-used document transfer protocol on the Internet. FTP adopts the client-server mode. The object of this task is to design a FTP server program and a FTP client program.
This article mainly focuses on how to design and concretely realize the programs of FTP server and client through the method of software engineering. The procedures follow the way which is from the top to the bottom. This article could be divided into several chapters, including the analysis of FTP protocol, the analysis of demands, program design and practical function design, with a detailed introduction of the analysis, design and realization of FTP programs.This largely according with programming criterion, this FTP program is equipped with a couple of functions involving the initiation and closure of FTP links, uploading and downloading files, the judgement of user’s logging status, automatically altering Jumping catalogs and the output of file catalogs.
Key words Server, System Design, Software Process
目录
摘要 I
ABSTRACT II
第1章 绪论 1
1.1系统开发背景 1
1.2课题主要研究内容和意义 2
1.3 Eclipse的概述 2
1.4 本章小结 3
第2章FTP协议 4
2.1 FTP简介 4
2.1.1 FTP服务器登入方式的分类 4
2.1.2 FTP运行原理 5
2.2 FTP标准命令 6
2.3 本章小结 8
第3章 需求分析 9
3.1 任务描述 9
3.2 用户特点 9
3.3 软件架构 9
3.3.1服务器架构设计 9
3.3.2客户端架构设计 10
3.4开发环境 11
3.5本章小结 11
第4章 系统设计 12
4.1 模块设计 12
4.1.1 FTP服务器模块 12
4.1.2 FTP客户端模块 13
4.2 FTP服务器模块的设计 13
4.2.1 服务器控制模块 13
4.2.2 数据传输模块 17
4.2.3 命令信道模块 18
4.2.4 文件处理模块 19
4.2.5 用户相关模块 20
4.3 FTP客户端模块设计 21
4.3.1 客户端信息处理模块 21
4.3.2 客户端文件传输模块 23
4.3.3 客户端网络连接模块 25
4.4 FTP类图 25
4.5本章小结 26
第5章 系统实现 27
5.1 服务器端的具体功能实现 27
5.1.1 GUI界面时间处理功能 27
5.1.2用户的添加功能 27
5.1.3 用户的删除功能 29
5.1.4 远程客户端的监听功能 29
5.1.5用户判断具体功能实现 29
5.1.6远程客户端FTP命令处理 31
5.1.7 PASV与PORT命令的具体实现 32
5.1.8 TYPE命令的具体实现 33
5.1.9 文件列表的输出功能 34
5.1.10 文件的上传和下载功能 36
5.2 客户端具体功能实现 36
5.2.1 GUI界面事件处理功能 36
5.2.2 服务器的连接功能 37
5.2.3 获取服务器的输出列表功能 39
5.2.4 文件的上传和下载功能 40
5.3 本章小结 42
第6章 结论 43
致谢 44
参考文献 45
- IV -
第1章 绪论
1.1系统开发背景
起初,FTP并不是应用于IP网络上的协议,而是ARPANET网络中计算机间的文件传输协议,ARPANET是美国国防部组建的老网络,于1960~1980年使用。在那时,FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。
FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用
1.从客户向服务器发送一个文件。
2.从服务器向客户发送一个文件。
3.从服务器向客户发送文件或目录列表。
一般来说,通过FTP传输文件要比使用其他协议(如HTTP)更加有效,其中主要的原因有;
1.FTP协议主要用来传输文件,不像HTTP还有其他一些功能,除了校验发送和接受的文件以外,它不会像HTTP那样停下来翻译文件内容。
2.通常主机的FTP事物处理是FTP服务器的唯一工作,既然这样,计算机的处理器资源被完全投入到FTP事物处理中,而不会被几个竞争服务器(处理器)时间的工作所分割。
实际上存在2种FTP站点:一种是匿名的,之所以称之为匿名是因为任何
人都可以访问它,虽然它有所谓的密码保护,但是任何匿名的FTP站点都允许那些使用anonymous用户名以及E-mail地址作为密码的用户访问。在匿名站点中,一些访问的类型受到了限制,如大多数站点允许下载,但是不允许匿名用户上传资料。另外一种FTP站点是非匿名的,他们要求用户有个合法的用户名和密码,用户和密码通常是系统管理员或者是ISP尤其是站点的所有者提供的。如果没有用户密码,将会被拒绝访问。
1.2 课题主要研究内容和意义
文件传输与共享是计算机网络的重要应用之一,本课题实现一个基于FTP协议的文件传输服务器及客户端程序的开发,主要完成以下工作:
1.查阅相关文献资料。
2. 利用软件工程学的方法实现系统分析与设计。
3. 熟悉FTP协议,并实现文件传输服务器的设计编码。
4. 采用多线程技术实现客户端与服务器的程序的设计与编码。
5. 编码语言为JAVA,开发环境Eclipse。
FTP(File transfer Protocol,文件传输协议)是Internet上使用非常广泛的一种的通信协议,它是由支持Internet文件传输的各种规则组成的,这些规则使Internet用户可以把文件从一个主机拷贝到另外一个主机上。FTP支持多种文件类型和文件格式,包括ASCⅡ文件传输格式和二进制文件传输格式。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机,比如说,用户发出一条命令,要求服务器向用户发送某一文件的一份拷贝,服务器会响应这条命令。将指定的文件发到用户的机器上。客户机程序代表用户接受到这个文件,将其存放在用户指定的目录中。
1.3 Eclipse的概述
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,每一个项目由一个项目管理委员会监督,并由它的项目章程管理。每一个项目由其自身的子项目组成,并且使用 Common Public License(CPL)版本1.0许可协议。Eclipse工具项目为不同的工具建造者提供一个焦点,以保证为Eclipse Platform创建最好的工具。Eclipse工具项目的任务是为Eclipse Platform培育广泛的工具的创建。工具项目提供单一的联系点以调和开放源代码工具建造者,从而使得覆盖和重复最小化,并保证共享的最大化和共同组件的创建,促进不同类型工具的无缝互操作。工具项目由工具开发者委员会和工具项目的项目管理委员会提议、选择和开发的子项目组成。Eclipse技术项目的任务是为开放源代码开发者、研究者、学院和教育者提供新的管道,以参与将来Eclipse的演化。它按照研究、培育和教育三个项目流来组织,研究项目在Eclipse相关领域诸如编程语言、工具和开发环境方面进行探索和研究;培育项目是小型的、未正式结构化的项目,为Eclipse软件基础添加新的能力;教育项目聚焦于教育材料的开发、教学帮助和课件。Eclipse Platform是一个开放的可扩展的IDE。Eclipse Platform提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具你无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 Eclipse SDK(软件开发者包)是3个Eclipse项目的子项目(Platform、JDT、PDE)所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。
1.4 本章小结
本章主要介绍了FTP的开发背景,研究的内容以及意义;介绍了开发java应用涉及的技术和开发工具。
第2章FTP协议
2.1 FTP简介
FTP(File Transfer Protocol),即文件传输协议。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。采用FTP协议可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供的下载服。Internet成为了一个巨型的软件仓库。FTP在文件传输中还支持断点续传功能,可以大幅度地减小CPU和网络带宽的开销。
FTP协议要使用两个TCP连接传送数据,一个是命令连接,用来在FTP客户端与服务器之间传递命令;另一个是数据连接,用来上传或下载数据。这就直接导致FTP需要2个端口,一个端口用于控制连接,即21端口,发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20,是用来建立数据传输通道。
2.1.1 FTP服务器登入方式的分类
我们已经知道FTP服务实际上就是将各种可用资源放在各个FTP主机中,网络上的用户可以通过Internet联到这些主机上,并且使用FTP(文件传送协议)将想要的文件拷回到自己的计算机中。在使用FTP传送文件之前,最主要的步骤就是如何联入各Internet上的FTP服务器。联入的主要步骤也就是登录(Login)的过程。通常用户在欲下载的FTP服务器上输入许可的帐号(account)和密码(password),得到该服务器许可后,即可进入。 FTP服务器分为两种:
其一,为一般的FTP服务器,进入这种服务器时必须拥有该主机的帐号和密码;
其二,为匿名FTP服务器(称为anonymous FTP服务器)登录此类FTP服务器时,用户只要以“guest”或“anonymous”为帐号,并以自己的E-mail地址为密码,即可进入该FTP服务器主机,任意浏览和下载文件。当用户登录到某个FTP服务器时,如果用“guest”或“anonymous”为帐号,均无法进入,则表明该服务器不是匿名FTP服务器。实际上,匿名FTP只是FTP中的一种,它是一种开放式帐号的FTP服务器,它可以为网络上的任何使用者所利用,与非匿名的FTP不同的只是登录时的帐号为“anonymous”,而密码为任一用户的E-mail地址。现在,某些站点还明确要求使用电子邮件地址作为匿名用户密码,而不接受"guest"这样的密码.提供电子邮件地址,有助于让站点的拥有者了解到是哪些人在使用他们的服务。
2.1.2 FTP运行原理
在一个FTP会话中,会存在两个独立的网络连接,一个是由两端的P I使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称做控制连接(control connection),D T P之间的连接被称做数据连接(data connection)。通常情况下,FTP服务器监听端口号2 1来等待控制连接建立请求,当客户连接请求到达,会在客户和FTP服务器之间建立一个控制连接。而数据连接端口号的选择依赖于控制连接上的命令,通常是客户发送一个控制消息来指定客户需要建立一个数据连接来传输FTP数据(如下载/上载一个文件,显示当前目录的内容等等,都需要建立数据连接来传输数据),在该消息中,指定了客户监听并等待连接的端口号,而服务器从控制连接收到该命令,向客户端发起一个连接请求到消息中指定的端口号,客户端收到该请求以后就会建立一个数据连接。连接建立以后,服务器或客户就会主动通过该连接发送数据(可能是要传输的文件,也可能是用户在命令行上发出的ls命令的输出)。
一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。
1.控制连接
客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。
2.数据连接
FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(Active)和被动传输模式(Passive)。
1.主动传输模式:
当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发出PORT命令与服务器进行协商,FTP服务器使用一个标准端口20作为服务器端的数据连接端口(FTP-data),与客户建立数据连接。端口20只用于连接源地址是服务器端的情况,并且端口20没有监听进程来监听客户请求。 在主动传输模式下,FTP的数据连接和控制连接方向相反,由服务器向客户端发起一个用于数据传输的连接。客户端的连接端口由服务器端和客户端通过协商确定。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。
2.被动传输模式
当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发送PASV命令使服务器处于被动传输模式,FTP服务器等待客户与其联系。FTP服务器在非20端口的其它数据传输端口上监听客户请求。 在被动传输模式下,FTP的数据连接和控制连接方向一致,由客户端向服务器发起一个用于数据传输的连接。客户端的连接端口是发起该数据连接请求时使用的端口。当FTP客户在防火墙之外访问FTP服务器时,需要使用被动传输模式。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。
2.2 FTP标准命令
ftp使用的内部命令如下(中括号表示可选项):
1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip.
2.$ macro-ame[args]:执行宏定义macro-name.
3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。
4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。
7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。
9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir:进入远程主机目录。
11.cdup:进入远程主机目录的父目录。
12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。
13.close:中断与远程服务器的ftp会话(与open对应)。
14.cr:使用asscii方式传输文件时,将回车换行转换为回行。
15.delete remote-file:删除远程主机文件。
16.debug[debug-value]:设置调试方式,显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。
18.disconnection:同close。
19.form format:将文件传输方式设置为format,缺省为file方式。
20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。
21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,
22.hash:每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25.image:设置二进制传输方式(同binary)。
26.lcd[dir]:将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file。
28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,
31.mget remote-files:传输多个远程文件。
32.mkdir dir-name:在远程主机中建一目录。
33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename,缺省为stream方式。
35.modtime file-name:显示远程主机文件的最后修改时间。
36.mput local-file:将多个文件传输至远程主机。
以上为FTP协议中规定的所有FTP命令,但是不同的FTP服务器对FTP命令的支持程度可能不同,如WINDOWS和LINUX不同系统的命令格式和操作都有差异,而且协议中的很多命令由于安全和执行效率等因素已经不被现有的服务器和客户端所使用
TCP标准定义在FTP协议的基础上,定义了一个所有FTP服务器都必须实现的命令集,我们的目标就是构建一个实现这个最小命令集的FTP服务器,以实现FTP文件管理和传输。
在FTP协议中规定:每个命令必须有最少一个响应。
2.3 本章小结
本章主要介绍了FTP协议以及FTP标准命令。
第3章 需求分析
3.1 任务描述
根据FTP协议规定,使用JAVA语言编程,以软件工程的开发方式实现FTP
服务器端以及客户端的基本功能。
FTP服务器程序,其加强的文件传输系统能够完全满足今天的用户的应用需求。本软件主要包括服务器端和客户端两个部分。在服务器端,服务器将会对登陆的普通用户进行上传和下载文件的相关服务,并且自带了用户登陆判断功能,对于使用不正确的账号和密码的用户将无法正常登陆该服务器。该服务器还具备用户管理功能,可以对用户进行添加删除功能。并设置用户工作目录,使得登陆的用户无法访问到不属于自己工作目录下的其他目录。增加了服务器的安全性。
FTP客户端给普通同用户提供一个与服务器端进行通信的操作界面,普通用户可以在输入正确的账号、密码、服务器IP和服务器端口号后对服务器进行访问,主要包括文件上传,文件下载,目录访问等功能。
通过对此课题的研究能够使我更加熟悉FTP的工作方式,更加了解FTP协议以及TCP/IP 协议。更熟练的应用java,为以后我从事网络工作打下一个坚实的基础!
3.2 用户特点
系统应该围绕着用户特点设计,服务器管理员,可以通过界面对服务器进行打开和关闭,并且可以对普通用户进行添加,可以设置普通用户的登陆账号、密码以及工作目录。对于那些对FTP服务器有危害的普通用户可以通过删除用户的方式删除该用户的账号和密码,使该用户无法正常登陆。
普通用户必须通过有效的账号名和密码用FTP客户端对服务器进行访问,在访问期间,可以进行文件的上传,文件的下载,访问目录等功能。访问服务器完毕后可以通过断开连接的方式,结束于服务器间的通信。
3.3 软件架构
3.3.1服务器架构设计
对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。三层架构是目前使用较多的架构之一,其3层主要包括数据访问层、业务逻辑层、界面层(UI)3个部分。普通我们所说的三层架构既是将程序划分为数据访问层、业务逻辑层、界面层(UI)。该服务器也考虑使用这种架构。
UI层主要提供用户界面,方便用户对服务器进行基本的操作,如打开和关闭服务器,并且提供方便的接口用以添加和删除用户等操作。
逻辑处理层主要用于处理FTP命令,属于系统的核心部分。
数据访问层处理主要用于处理数据、与客户端的通信以及文件的相关操作,包括文件的上传下载的数据的处理、与客户端的通信,用户的添加、删除等。
3.3.2客户端架构设计
客户端虽然不存在用户的添加和删除的功能,但是同样要处理文件的上传和下载等功能,以及服务器的连接的功能,因此,这些也都应该放在数据访问层里,所以该客户端也考虑用3层架构:
UI层主要提供用户界面,方便用户对客户端进行操作,如连接服务器,上传下载的使用界面,查看服务器目录等功能。
逻辑处理层主要用于处理客户端的命令,根据用户在UI层所输入的命令进行操作。
数据访问层处理主要用于处理数据、与服务器的通信,以及文件的相关操作,包括文件的上传下载的数据的处理等。
图3-1 3层架构图
3.4开发环境
1.硬件
硬件环境(用户):该软件对资源的消耗不会太大,对配置的要求不高。
硬件环境(开发者):Intel Celeron(R)处理器,512M内存,60G磁盘空间。
2.软件
操作系统:Windows2000/NT/XP。
编写语言:Java。
运行环境:安装JDK1.6支持Java运行。
工具:Eclipse。
3.5本章小结
本章主要介绍了FTP服务器的需求分析,用户的特点,软件的架构和开发环境。
第4章 系统设计
4.1 模块设计
按照面向对象的方法,根据需求分析的结果,该系统分为FTP服务器模块和FTP客户端模块。
4.1.1 FTP服务器模块
1.服务器控制模块:主要用于对服务器进行控制(如打开或关闭服务器等),监视服务器状态(如监视是否有远程客户登录).
2.数据传输模块:主要用于设置传输模式,传输格式.该模块可以通过调用文件处理模块来实现文件的上传和下载功能。
3.命令信道模块:主要用于管理与客户端的连接与FTP命令的处理。
4.文件处理模块:主要用于处理文件的读取和处理,将会被数据传输模块和用户相关模块调用,分别实现文件的上传下载,用户的添加删除以及用户登录功能的相关数据读取。
5.用户相关模块:主要用于实现用户管理。该模块配合文件处理模块将实现用户登录判断,以及用户管理功能。
划分如下图所示:
图4-1 FTP服务器模块设计图
4.1.2 FTP客户端模块
1.信息处理模块:主要用于处理从服务器的返还信息和从客户端用户发送的操作命令。
2.文件传输模块:主要用于处理文件上的读取和存储,可以通过该模块来实现文件的上传和下载。
3.网络链接模块:主要用于处理与服务器间的通信。
如下图所示:
图4-2 FTP客户端模块设计图
4.2 FTP服务器模块的设计
4.2.1 服务器控制模块
服务器控制模块包括:FTPAdmin, FTPAdmin_Item_actionAdapter, FTPThread, FTPSEVER。
FTPAdmin:GUI(Graphic User Interface),即用户界面类。
文件的上传,下载以及列表的输出,用户的登陆等功能,全部是由客户端对服务器端发出的通信即FTP命令,在由服务器作出处理,在返还处理信息(包括文件目录、文件上传和下载的数据流等)。所以只有用户的管理功能需要一个用户界面。因此,对于在服务器界面上所需的控件相对较少,主要包括以下几个控件:
表4-1 服务器端用户界面使用控件
控件类型
控件描述
Jbutton
添加用户
Jbutton
更新用户列表
Jbutton
删除用户
List
显示用户列表
JTextField
输入添加用户名
JPasswordField
输入添加用户密码
JTextField
输入添加用户工作目录
JTextArea
用于返回服务器的相关信息
用户可以通过以上的控件来对用户管理功能进行控制,在文本框中输入用户名,密码和工作目录后点击添加用户即可添加用户信息。同样的在列表中选中用户名称,点击删除用户,可以对用户进行删除。
需要用户输入信息:添加的用户名,添加用户的密码,添加用户的工作目录,相应的点击事件。
FTPAdmin_Item_actionAdapter:对GUI界面上用户的触发事件进行分析,并且根据用户界面的命令调用其他的类,该类为服务器控制模块的核心,基本上管理员对服务器所有的操作均需要通过该类来进行处理,如打开和关闭服务器,添加或删除用户等。
表4-2 FTPAdmin_Item_actionAdapter类属性列表
属性类型
属性名称
属性描述
boolean
isgreate
判断服务器是否已经建立
FTPSEVER:FTP服务的监听线程类,该类为一个线程类。当FTPAdmin_Item _actionAdapter判断出UI的命令为打开服务器事件时,创建该线程,即要启动服务器,可以将一个ServerSocket对象实例化。一旦ServerSocket实例化了,就可以使用accept方法等连接,它将返回一个Socket对象。该线程将会自动监听21端口等待客户端访问,当21端口有远程客户端访问时将会创建FTPThread类,通过该类与客户端进行通讯。
FTPThread:同样也是一个线程类,当FTPSEVER类监听到客户端访问时将会将会创建该线程,该线程则会调用数据访问层的类进行与客户端的通信,并将客户端的信息发送给其他类作处理。
表4-3 FTPThread类属性列表
属性类型
属性名称
属性描述
String
CommandString
FTP命令
String
Cmd
FTP命令前缀
String
Param
FTP命令后缀
String
Message
返回信息
boolean
quit
判断客户端是否退出
图4-3 FTP服务器连接控制时序图
FTP的运行流程如下图所示:
图4-4服务器端控制流程图
4.2.2 数据传输模块
数据传输模块控制FTP的文件上传和下载,通过这个类可以控制文件的传输格式,主要分为PASV和PORT两种传输格式,包括DateSocket,PortSocket,PasvSocket几个类:
DateSocket:数据通道接口,该接口主要用来规范数据通道,以方便统一调用。
PortSocket: 该类由DateSocketInvoker类调用,主要实现PORT模式即主动模式的数据通道功能,继承于DateSocket类,调用该类将会设置文件传输端口以方便以后在文件的上传或下载的时候调用。
表4-4 PortSocket属性名
属性类型
属性名称
属性描述
PrintWriter
dout
传输接口
String
Host
主机域名
int
Port
端口号
PasvSocket:该类主要实现PASV模式即被动模式的数据通道功能,与PortSocket类同样由DateSocketInvoker类调用且继承于DateSocket类,以实现控制传输模式的功能,方便以后在文件的上传或下载的时候调用。、
表4-5 PasvSocket属性名
属性类型
属性名称
属性描述
PrintWriter
dout
传输接口
String
Host
主机域名
int
Port
端口号
图4-5 服务器端数据传输模式控制流程图
4.2.3 命令信道模块
DateSocketInvoker:主要用于处理数据传输模式的相关信息,根据客户端的命令设置传输模式为PASV或PORT模式,同时当需要传输信息时也可通过调用该类获取传输接口以进行传输。
表4-6 DateSocketInvoker类属性列表
属性类型
属性名称
属性描述
String
DateMode
传输模式
CmdSocket类:该类主要由FTPThread类调用,主要监听与回复远程客户端信息的功能。
表4-7 CmdSocket属性名
属性类型
属性名称
属性描述
Socket
csocket
传输接口
BufferedReader
in
输入流
PrintWriter
out
输出流
String
InString
客户端传入信息
FTPExecutor:主要用于处理客户端的FTP命令,对客户端的信息进行分析,根据信息的不同,作出相应的响应,并且调用相应的类进行处理。
表4-8 FTPExecutor类属性列表
属性类型
属性名称
属性描述
String
Param
FTP命令后缀
String
Cmd
FTP命令前缀
String
Message
返回信息
String
TYPE
文件传输格式
图4-6 FTP命令信道数据流图
4.2.4 文件处理模块
FileInvoker:主要用于文件处理的相关操作,主要包括设置文件的传输格式,如TYPE A和TYPE I 。服务器目录文件的访问,如返回上层目录,进入下层目录等操作。
表4-9 DateSocketInvoker类属性列表
属性类型
属性名称
属性描述
String
DiskDir
初时目录
String
FTPDir
当前目录
String
DiskRoot
根目录
String
fileType
文件传输格式
Object
fin
数据流
图4-7 FTP传输格式控制数据流程图
4.2.5 用户相关模块
UserExecute类,主要用于用户数据的添加和删除功能,由FTPAdmin_Item_
actionAdapter调用。
UserInfo类,主要用于访问用户文件,以判断用户身份的功能。
表4-10 UserInfo属性名
属性类型
属性名称
属性描述
String
username
用户名
String
userdir
用户工作目录
下图为服务器用户登陆判断流程图:
图4-8 服务器用户登陆判断流程图
4.3 FTP客户端模块设计
4.3.1 客户端信息处理模块
Frame1_Item_actionAdapter:该类主要负责对UI层的命令的分析,同时根据命令的不同调用相应的类去进行处理,如上传、下载刷新列表等。
Execute类:主要用于在处理逻辑层功能的具体实现,由Frame1_Item
_actionAdapter类判断触发事件的类型
展开阅读全文