计算机网络课程设计论文.docx

上传人:b****8 文档编号:10290726 上传时间:2023-02-09 格式:DOCX 页数:21 大小:331.07KB
下载 相关 举报
计算机网络课程设计论文.docx_第1页
第1页 / 共21页
计算机网络课程设计论文.docx_第2页
第2页 / 共21页
计算机网络课程设计论文.docx_第3页
第3页 / 共21页
计算机网络课程设计论文.docx_第4页
第4页 / 共21页
计算机网络课程设计论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

计算机网络课程设计论文.docx

《计算机网络课程设计论文.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计论文.docx(21页珍藏版)》请在冰豆网上搜索。

计算机网络课程设计论文.docx

计算机网络课程设计论文

 

计算机网络课程设计

 

题目:

简单FTP客户端软件开发

 

摘要

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

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

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

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

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

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

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

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

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

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。

也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。

换言之,除非有用户ID和口令,否则便无法传送文件。

这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。

匿名FTP就是为解决这个问题而产生的。

匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。

系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。

关键字:

FTP;远程连接;上传;下载

 

目录

第一章2

第二章前言2

1.1研究目的2

1.2研究意义2

1.3研究的范围2

1.4力求达到的目标2

1.5本课题应解决的主要问题2

第三章需求分析3

2.1整体需求3

2.2详细需求3

2.2.1需求概述3

2.2.2功能结构3

2.2.3业务流程4

第四章理论基础5

3.1.FTP基础5

3.1.1FTP简介5

3.1.2FTP特点5

3.1.3FTP连接5

3.1.4FTP连接管理6

3.1.5FTP协议的部分命令6

3.1.6FTP协议命令的返回代码7

第五章系统总体设计与实现8

4.1系统总体设计8

4.2具体实现9

4.2.1实现FTP站点管理功能9

4.2.2实现登陆模板9

4.2.3实现本地资源管理10

4.2.4呈现本地资源10

4.2.5本地资源的控制面板11

4.2.6呈现FTP服务器资源11

4.2.7FTP服务器资源的控制面板12

4.2.8任务队列12

4.2.9本地队列文件上传13

4.2.10FTP队列文件下载13

第五章总结与展望14

参考文献15

第一章

第二章前言

1.1研究目的

编写一个FTP客户端小软件。

1.2研究意义

理解掌握文件传输协议的具体内容。

1.3研究的范围

FTP协议,Java网络编程

1.4力求达到的目标

要求可以传递简单文本文件。

1.5本课题应解决的主要问题

(1)如何搭建FTP服务器。

(2)如何将客户端连接到FTP服务器上。

(3)如何实现从FTP服务器端下载文件并将文件从客户端上传到FTP服务器上。

 

第三章需求分析

2.1整体需求

根据客户(刘老师)提供的课题名称,编写出一个FTP客户端小软件。

2.2详细需求

2.2.1需求概述

FTP文件管理模块是一个方便用户访问FTP服务器,执行常用操作的一个FTP文件上传、下载工具。

它可以使用多线程技术同时完成文件的上传、下载和正常的维护业务,而不耽误用户操作,不会阻塞用户UI线程,导致页面死锁。

另外,该模块的任务队列功能可以控制上传、下载任务的前后顺序、暂停、继续、清空和文件上传、下载的记录。

2.2.2功能结构

FTP文件管理模块包括连接FTP服务器、FTP操作管理、队列管理以及帮助5部分。

它的功能结构如图2-1所示。

图2-1功能结构图

2.2.3业务流程

在FTP文件管理模块中,首先要登录服务器,验证登录用户是否合法。

如果登录成功,便可以上传本地文件或文件夹,同时也可以管理FTP服务器端文件,包括下载、删除文件以及创建新目录等功能,FTP文件管理模块的业务流程图如图2-2所示。

图2-2业务流程图

第四章理论基础

3.1.FTP基础

3.1.1FTP简介

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文件传协输议”。

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

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

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

FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

3.1.2FTP特点

FTP将文件从一台主机传输到另一台主机。

它允许在不同的主机和不同的操作系统间传输文件,并且文件的结构和字符集可以不同。

其特点:

(1)只提供文件传送的一些基本服务,基于TCP可靠运输。

(2)减少或消除在不同操作系统下处理文件的不兼容性。

(3)使用客户服务器方式。

一个FTP服务器进程可同时为多个客户进程提供服务。

FTP的服务器进程由两大部分组成:

一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

3.1.3FTP连接

FTP使用两条TCP连接来完成文件传输,一条是控制连接,另一条是数据连接。

平时服务器总在端口21等待客户的连接请求,当用户需要传输文件时,客户首先与服务器端口21建立一个控制连接,用来传送客户的命令和服务器的应答。

客户还会告知服务器自己将用的数据端口号。

该连接会一直保持到客户与服务器FTP全部通信结束为止。

当客户发出文件下载、文件上传、列目录的数据传输请求时,服务器端口20主动与客户端告知的数据端口建立数据连接,并在其上传输数据,在该次数据传输完毕后立即关闭数据传输连接。

使用了两个连接,一方面使协议更加简单和更容易实现;另一方面在传输文件时还可以同时利用控制连接与服务器进行交互(如客户发送请求终止文件传输)。

FTP使用了一个分离的控制连接,因此叫“带外”(outofband)传送。

3.1.4FTP连接管理

建立一个数据连接的过程如下:

(1)客户进程为数据连接选择一个本地的临时端口号。

(2)客户进程在控制连接上用PORT命令将临时端口号发送给服务器,如客户方发PORT4,10命令给服务器,表示在以后建数据连接时,客户方使用数据连接的端口号为:

4*256+10=1034;

(3)服务器收到端口号后,当需要和客户端进行文件下传、上载、目录列表操作时,会主动发起一个数据连接请求,同客户机先前告知的该端口建立一个数据连接,而服务器侧用于数据连接的端口号默认为20。

数据连接总是由发送文件的一方主动关闭,因为发送方是用关闭连接来表示一个文件传输结束的。

3.1.5FTP协议的部分命令

FTP协议的命令及说明

命令

说明

ABOR

中断数据连接

ACCT

系统特权账号

ALLO

为服务器上的文件存储器分配字节

APPE

追加内容到服务器同名文件

CDUP

改变服务器的上级目录

CWD

改变服务器上的工作目录

DELE

删除服务器上的指定文件

HELP

返回指定命令信息

LIST

如果是文件名列出文件信息,如果是目录则列出文件列表

MODE

传输模式

MKD

在服务器上建立指定目录

NLST

列出指定目录内容

NOOP

无动作、除了来自服务器上的承认

PASS

系统登录密码

PASV

请求服务器等待数据连接

PORT

IP地址和两字节的端口ID

PWD

显示当前工作目录

QUIT

从FTP服务器上退出登录

REIN

重新初始化登录状态连接

REST

由特定偏移量重启文件传递

RETR

从服务器上找回(复制)文件

RMD

在服务器上删除指定目录

RNFR

对旧路径重命名

RNTO

对新路径重命名

SITE

由服务器提供的站点特殊参数

SMNT

挂载指定文件结构

STAT

在当前程序或目录上返回信息

STOR

储存(复制)文件到服务器

STOU

储存文件到服务器名称上

STRU

数据结构(F=文件,R=记录,P=页面)

SYST

返回服务器使用的操作系统

TYPE

数据类型(A=ASKII,E=EBCDIC,I=binary)

USER

系统登录的用户名

表3-1FTP协议命令

3.1.6FTP协议命令的返回代码

FTP协议的命令返回代码及说明

成员

说明

成员

说明

110

新文件指示器上的重启标记

331

要求密码

120

服务器准备就绪的分钟计数

332

要求账号

125

打开数据连接,开始传输

350

文件行为暂停

150

打开连接

421

服务关闭

200

成功

425

无法打开数据连接】

202

命令没有执行

426

结束连接

211

系统状态返回

450

文件不可用

212

目录状态回复

451

遇到本地错误

213

文件状态回复

452

磁盘空间不足

214

帮助信息回复

500

无效命令

215

系统类型回复

501

错误参数

220

服务就绪

502

命令没有执行

221

退出网络

503

错误指令序列

225

打开数据连接

504

无效指令参数

226

结束数据连接

530

为登录网络

227

进入被动模式

532

存储需要账号

230

登录因特网

550

文件不可用

250

文件行为完成

551

不知道的页类型

257

路径名建立完成

552

超过存储分配

表3-2FTP协议的命令返回代码

第五章系统总体设计与实现

4.1系统总体设计

系统主窗体的运行效果如图4-1所示。

图4-1程序预览图

4.2具体实现

4.2.1实现FTP站点管理功能

FTP站点管理功能,包括记录FTP站点,提供编辑、添加、删除和连接等维护操作。

1.装载属性文件

本模块使用Properties类将FTP站点信息以属性文件的格式保存在计算机的磁盘文件中。

这样实现了FTP站点信息的持久化,但是在程序运行时需要重新加载属性文件。

2.装载FTP站点信息

在FTP站点管理对话框的左侧是站点信息的列表,该列表显示了所有记录的站点名称。

这些名称是用户自己定义的,由列表组件数据模型中的站点信息对象提供。

(1)编写SiteInfoBean类,即编写站点信息的JavaBean类,该类在装载站点数据的loadSiteList()方法和其他站点维护方法中广泛使用,用于存储FTP站点的名称、地址、用户名和端口号等信息,另外还重写toString()方法,toString()方法将在一个对象转换为字符串类型时被调用。

(2)编写站点维护对话框

在单击FTP站点管理对话框右侧的“添加”和“编辑”按钮时,事件处理方法将创建SiteDialog类的对象,它是站点对话框的实例,该类可以根据不同的构造方法创建“添加FTP站点”对话框、“编辑FTP站点”对话框和“查看FTP站点”对话框。

该对话框是由SiteDialog类创建的,该类继承JDialog类成为Swing的对话框组件。

另外,它还实现了ActionListener接口,重写了actionPerformed()方法,在这个方法中完成“确定”和“重置”按钮事件处理。

3.维护FTP站点

站点的列表能够可视化的浏览站点,但是,列表中只显示站点的名称,它实际上是站点JavaBean类的对象,如果不提供维护方法,这个列表就没有任何意义。

因此,FTP站点管理功能提供了4个维护按钮,分别是“连接”、“添加”、“编辑”和“删除”按钮。

FTP站点维护功能的实现步骤如下。

(1)在编写按钮的事件处理方法中,FTP站点管理的FtpSiteDialog类实现了ActionListener接口,并且设置该类作为4个维护按钮的事件监听器。

因此需要在actionPerformed()方法中分别判断和执行4个按钮的业务方法。

(2)在FTP站点列表组件中,首先选择某个站点名称,然后单击右侧的“连接”按钮可以将该FTP站点的信息添加到登陆面板中,最后在登陆面板输入密码就可以连接FTP服务器。

这个连接操作体现了FTP站点管理的方便性和它存在的目的。

“连接”按钮的事件处理方法将调用主窗体的setLinkInfo()方法传递站点信息到登陆面板中。

(3)在“添加”和“编辑”按钮的事件处理中,只是简单的创建SiteDialog类的实例对象,显示不同的对话框,然后又对话框完成相应的业务逻辑。

(4)在编写“删除”按钮的业务处理方法中,该方法将根据bean参数从属性集合中删除指定编号的站点属性。

4.2.2实现登陆模板

登陆面板位于主窗体的菜单栏下方,包括登陆FTP服务器的各种信息输入文本框和连接、断开操作的工具按钮,另外还有一个“自动关机”按钮,实现任务队列执行完毕后的自动关机任务。

实现登陆面板的步骤如下。

(1)编写“连接到”按钮的Action动作类,该类继承Abstraction抽象类并实现actionPerformed()方法来处理按钮和菜单的单机事件,在该方法中将创建FtpLinkDialog类的实例对象,即“连接到FTP站点”对话框,由该对话框处理相应的业务。

(2)编写“断开”按钮的Action动作类,该类的实例对象将设置“断开”按钮和“断开”菜单项的Action属性,因此该动作处理类的状态或属性的改变,将同时影响“断开”菜单项和“断开”按钮的状态。

在该动作类构造方法中设置不可用状态,然后在actionPerformed()方法中处理“断开”服务器连接的业务,主要包括停止上传和停止下载的线程、清空任务队列、清除FTP资源的文件列表、断开已存在的服务器连接等操作。

(3)编写“连接”按钮的事件处理方法,在该事件处理方法单击“连接”按钮时,由该按钮的事件监听器调用。

首先该方法从登录面板的文本框中获取服务器的地址、端口号、用户名和密码等连接信息,然后执行连接FTP服务器的操作,并将传输模式设置为二进制。

最后,根据连接状态,设置“断开”、“上传”和“下载”等按钮的可用状态,以及一些其他设置。

4.2.3实现本地资源管理

本地资源面板布局在主窗体的左侧,主要用于获取本地磁盘的文件或文件夹列表,列表中详细显示了文件大小、名称、文件和文件夹的最后修改日期。

在该面板的工具栏中提供了“删除”、“重命名”、“新建文件夹”和“刷新”等本地维护按钮,另外还有一个重要的“上传“按钮,用于向FTP服务器传送文件。

4.2.4呈现本地资源

本地资源管理使用一个JTable表格组件显示磁盘或文件夹内容列表。

通过一个磁盘下拉选择框来变更当前磁盘,如果在表格中双击某个文件夹,将显示该文件夹的内容,如果双击的是文本,将使用本地系统的关联程序打开该文件。

例如,使用Word打开文本文件,使用PhotoShop打开图片文件,在双击EXE文件时,将在本地系统上运行该程序。

关键步骤如下:

(1)要呈现本地磁盘文件,首先需要编写读取本地文件信息并添加到组件中的listLocalFiles()方法,该方法调用java.util.File类的各种方法获取文件列表、文件名称、大小和最后修改日期等信息,然后添加到表格组件中。

(2)编写处理选择磁盘的下拉选择框事件处理方法,该事件处理方法将由下拉列表框的事件监听器调用。

它主要用于选择指定的磁盘,然后调用listLocalFiles()方法显示该磁盘的文件列表。

(3)编写表格双击事件处理方法,该事件处理方法在双击表格组件时由表格组件的事件监听器调用。

它主要用于判断用户双击的是文件还是文件夹,如果双击的是文件夹,则转换到文件夹并显示文件夹的文件列表;如果双击的是文件,则使用本地关联的程序打开该文件。

(4)编写渲染表格界面的渲染器,将本地磁盘文件添加到表格组件之后,只能以文本字符串显示文件或文件夹,作为文件资源管理器,必须使用图标标示不同的文件类型或文件夹,让用户能够清晰地分辨资源管理器的内容。

这就需要编写渲染器来为表格组件添加显示图标的能力。

4.2.5本地资源的控制面板

在显示本地资源的表格组件上方,是本地资源的控制面板,它包括“删除”、“重命名”、“新建文件夹”、“刷新”和“上传”等维护按钮,以及一个变更当前盘符的下拉选择框。

(1)删除本地文件

在控制面板的“删除”按钮用于删除表格中选择的一个或多个文件与文件夹。

该业务由DelFileAction动作类完成,它将被设置为本地的“删除”按钮与“本地”菜单的“删除”菜单项的Action属性。

由于File类的删除方法只能删除空文件夹,因此这个动作处理器的核心使用一个递归方法,无穷判断文件夹深度,删除所有子文件夹内容,最后再删除当前文件夹。

(2)重命名本地文件或文件夹

在控制面板上的“重命名”按钮用于实现对表格中选择的一个文件或文件夹的更名操作。

该业务由RenameAction动作类完成,它将被设置为本地的“重命名”按钮与“本地”菜单的“重命名”菜单项的Action属性。

(3)新建本地文件夹

单击工具栏上的“新建文件夹”按钮,将弹出输入对话框,要求用户输入新的文件夹名称,单击“确定”按钮后将在本地磁盘上建立该名称的文件夹。

实现创建本地文件夹的业务由CreateFolderAction类完成,该类继承AbstractAction类,也是一个动作处理器类。

它在动作事件处理方法中使用“输入”对话框接受用户输入的新文件夹的名称,在判断该文件夹名称没有被使用的情况下,创建新的文件夹然后刷新本地资源管理面板的文件列表。

(4)刷新本地资源列表

单击本地资源面板上的工具栏上的“刷新”按钮,将重新装载本地当前文件夹或磁盘的文件列表。

在更改本地文件或文件夹的名称以及增加、删除文件或文件夹之后需要执行刷新命令以显示最新的本地资源列表,否则,用户很难确定本地操作是否成功执行。

实现刷新本地资源列表的业务由RefreshAction类实现,它是一个动作处理器类,继承AbstractAction类并实现动作的事件处理方法,在该方法中调用本地资源管理面板的refreshCurrentFolder()方法,刷新本地资源的列表。

(5)添加本地文件到上传队列

单击本地管理面板工具栏的“上传”按钮,将执行文件上传到服务器的操作。

该操作由UploadAction动作处理器完成,它继承AbstractAction类,并重写了actionPerformed()事件处理方法。

在该方法中获取本地资源面板的表格组件的当前选择的所有文件或文件夹,然后将创建包含本地文件信息的DiskFile类的对象和FTP服务器当前路径信息的FtpFile类的实例对象,最后将这些文件对象添加到本地面板得队列中,这个队列将被文件上传线程调用。

4.2.6呈现FTP服务器资源

FTP资源管理同样使用一个JTable表格组件显示FTP服务器的文件或文件夹列表。

如果在表格中双击某个文件夹,将改变当前目录到这个文件夹,然后显示该文件夹的内容,在双击“..”选项时,将返回上一层文件夹。

要呈现FTP服务器文件列表,首先需要编写读取FTP服务器文件信息并添加到表格组件中的listFtpFiles()方法,该方法将读取FTP资源输入流中的数据,然后解析这些数据,读取FTP的资源列表信息,并将每一个FTP文件信息封装为FtpFile类的实例对象,将该对象添加到表格组件中。

4.2.7FTP服务器资源的控制面板

1.删除FTP服务器上的文件

在FTP资源管理控制面板上的“删除”按钮用于删除表格中选择的一个或多个文件与文件夹。

该业务由DelFileAction动作类完成,它将被设置为远程的“删除”按钮与“远程”菜单的“删除”菜单项的Action属性。

与本地的删除业务相同,这个动作处理器的核心使用一个递归方法,无穷判断文件夹深度,删除所有子文件夹内容,最后才能删除当前文件夹,因为FTP服务器只提供删除空文件夹的方法。

2.重命名FTP服务器的文件或文件夹

在控制面板上的“重命名”按钮用于实现对表格的一个FTP文件或文件夹的更名操作。

该业务由RenameAction动作类完成,它将被设置为远程的“重命名”按钮与“远程”菜单的“重命名”菜单项的Action属性。

3.在FTP服务器上新建文件夹

单击工具栏上的“创建文件夹”按钮,将弹出“输入”对话框,要求用户输入新的文件夹的名称,单击“确定”按钮后将在FTP服务器上的当前路径建立该名称的文件夹。

实现创建FTP文件夹的业务由CreateFolderAction类完成,该类继承AbstractAction类,也是一个动作处理器类。

它在动作事件方法中使用“输入”对话框接受用户输入的新文件夹的名称,在判断该文件夹名称没有被使用的情况下,创建新的文件夹然后刷新FTP服务器资源管理面板的文件列表。

4.刷新FTP服务器资源列表

单击FTP资源管理面板工具栏上的“刷新”按钮,将重新装载FTP服务器当前文件夹的文件列表。

在更改文件或文件夹的名称,以及增加、删除文件或文件夹之后需要执行刷新命令以显示最新的FTP服务器资源列表。

否则,用户很难确定操作是否正常进行。

实现刷新FTP服务器资源列表的业务由RefreshAction类实现,它是一个动作处理器类,它继承AbstractAction类并实现动作的事件处理方法,在该方法中调用FTP资源管理面板的refreshCurentFolder()方法,刷新服务器资源列表。

5.添加FTP文件到下载队列

单击FTP资源管理面板工具栏的“下载”按钮,将执行服务器文件到本地的下载操作。

该操作由DownAction动作处理器类完成,它继承AbstractAction类,并重写了actionPerformed()事件处理方法。

在该方法中获取FTP资源管理面板的表格组件中当前选择的所有文件或文件夹,然后为每个FTP文件信息创建FtpFile类的对象,并获取本地资源管理面板当前路径的File类对象,最后将这些文件对象声明到一个数组中作为一个下载任务添加到下载队列中,这个队列将被文件下载线程调用。

4.2.8任务队列

队列管理的任务队列中保存了所有上传和下载任务,这些任务必须在任务队列中安排执行的顺序,由队列控制暂停还是继续传输文件,以及删除单个任务或清空整个队列。

实现队列任务控制的步骤如下。

(1)创建自定义的面板组件实现任务队列界面,本模块继承JPanel组件编写新的面板组件QueuePanel类,并且实现了ActionListener接口和该接口定义的事件处理方法。

在该类的构造方法中创建了一个定时器组件,该组件每间隔1秒检查一次任务队列的变化,如果队列内容改变,则调用refreshQueue

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

当前位置:首页 > 经管营销 > 金融投资

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

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