基于C#的FTP客户端设计与实现(含源文件)

更新时间:2024-01-15 09:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《基于C#的FTP客户端实现》

目 录

摘要 ................................................................................................................ 错误!未定义书签。 引言 ................................................................................................................ 错误!未定义书签。 1. FTP协议分析 ............................................................................................ 错误!未定义书签。

1.1. FTP的工作原理 ............................................................................ 错误!未定义书签。 1.2. FTP工作模式 ................................................................................ 错误!未定义书签。 1.3. FTP传输模式 ................................................................................ 错误!未定义书签。 2. FTP客户端总体设计 .................................................................................................................. 1

2.1. 设计目的及开发环境 ..................................................................................................... 1

2.1.1. 设计目的与.NET环境简介 ................................................................................ 1 2.1.3. FtpWebRequest 类 ............................................................................................. 2 2.2. 系统UML分析 ................................................................................................................. 3

2.2.1. FTP客户端用例图 .............................................................................................. 3 2.2.2. FTP客户端主要序列图与活动图 ...................................................................... 4 2.2.4. FTP客户端类图 .................................................................................................. 8 2.3. 系统功能模块 ............................................................................................................... 12

2.3.1. 系统整体框架图 ............................................................................................... 12 2.3.2. 客户端功能模块 ............................................................................................... 12 2.3.3. 客户端界面设计 ............................................................................................... 13 2.4. 数据流程图 ................................................................................................................... 16

2.4.1. 客户端连接流程图 ........................................................................................... 16 2.4.2. 上传子模块流程图 ........................................................................................... 18 2.4.3. 下载子模块流程图 ........................................................................................... 19

3. FTP客户端程序实现 ................................................................................................................ 20

3.1. WPF界面设计 ................................................................................................................ 20

3.1.1. 首页界面详细设计 ........................................................................................... 20 3.1.2. 文件传输界面详细设计 ................................................................................... 21 3.1.3. 操作历史记录显示界面详细设计 ................................................................... 23 3.1.4. 常用地址查询模块设计 ................................................................................... 23 3.2. 功能模块实现 ............................................................................................................... 24

3.2.1. 连接服务器 ....................................................................................................... 24 3.2.2. 显示服务器端文件清单 ................................................................................... 25 3.2.3. 上传文件 ........................................................................................................... 25 3.2.4. 下载文件 ........................................................................................................... 26 3.2.5. 查询历史记录 ................................................................................................... 27 3.2.6. 常用地址管理 ................................................................................................... 28

4. 数据库建设 ............................................................................................................................... 28

4.1. 数据库表结构 ............................................................................................................... 28 4.2. 数据库关系模型 ........................................................................................................... 29 4.3. 数据库ER图 ................................................................................................................. 30 4.4. 数据库建表语句 ........................................................................................................... 30 5. 结语........................................................................................................................................... 31 参考文献......................................................................................................................................... 31

基于C#的FTP客户端设计与实现

服务器-FTPFTP请求Ftp响应用户-FTP用户接口服务器a用户用户a1文件传输系统数据连接服务器b用户b2文件传输系统 图 1-1 FTP

工作模式图

上图中用户PI开始控制连接,控制连接与Telnet协议很象。在开始阶段,标准FTP命令由用户PI产生并通图 1-2过控制连接传送到服务器进程。服务器PI向用户PI返回标准应答。FTP命令指定数据连接参数和文件系统操作。用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。

1. FTP客户端总体设计

1.1. 设计目的及开发环境 1.1.1. 设计目的

FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP客户端。虽然平时使用windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙的FTP客户端。IE浏览器在6.0以下的版本不支持PASV方式访问服务器,而且IE浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到

错误的原因,因此在使用上很不方便。现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。 1.1.2. NET环境简介

Visual Studio.NET是一个开发和运行软件的新环境,便于开发基于网络的服务,拥有丰富的运行库,支持多种编程语言编写的组件,具有跨语言平台的互操作能力。C#是.NET平台中最重要的语言,它本身没有类库,而是使用.NET框架所提供的统一类库,用户也可以定义特定域的属性,并将它们应用于任何语言元素如类、接口等,所以对网络应用程序提供完整的支援,这使得程序员能够在新的微软.NET平台上快速开发出种类丰富的应用程序。 1.1.3. FtpWebRequest 类

C#.NET类库的存在使它适合于一个不断发展的环境。在类库中我们可以自由地加入新的方法和实例变量而不会影响用户程序的执行。

.NET平台封装了实现FTP功能的一些基础类,位于命名空间为System.Net下的FtpWebRequest类用于实现文件传输协议(FTP)客户端的一些基本功能。二次封装了类FFP_Class,其成员包括string tipserveriP (服务器地址)、string ftpUseriD(登陆账号)、string ftpPassword (登录密码)和FtpWebRequest reqFTP。

本文所使用的FtpWebRequest类的构造方法和主要方法如下:

FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(Path));

此构造函数利用给出的主机名建立一条FTP连接,目的连接地址为Path所指定的地址,并建立URI对象。

reqFtp.UseBinary = true;

这条程序指定传输类型为Binary。

reqFtp.Credentials = new NetworkCredential(ftpUserId, ftpPassword); 此方法利用参数ftpUserId和

ftpPassword登录到

FTP服务器。使用过Internet的

用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。

2

1.2. 系统UML分析 1.2.1. FTP客户端用例图

1) 0层用例图

图 1-1 0层用例图

用户通过Ftp客户端系统进行文件传输。

2) 1层用例图

图 1-2 1层用例图

在Ftp客户端系统中,主要包括六个用例,分别是列出服务器端文件列表(ListServerFile)、从服务器端下载文件(DownLoadFile)、向服务器端上传文件(UpLoadFile)、列出历史记录(ListHistory)、对常用地址的操作(OpeatUsefulAddress)和输入用户登录信息(EnterUserInfo)。其中,每一个用例都包含EnterUserInfo用例,列出服务器文件列表(ListServerFile)用例扩展了下载文件(DownLoadFile)用例。

3) 二层用例图

a.

ListServerFileList子用例图。

3

图 1-3 2层用例图

ListServerFileList用例包含了两个子用例,分别为列出服务器端文件列表(ShowServerFileList)、打开目录(ChangeDirectory)。打开目录用例指的是打开服务器端子目录,获取子目录。

b. OperatUsefulAddress子用例图。

图 1-4 OperatUsefulAddress子用例图

OperatUsefulAddress用例包含了两个子用例图,分别为显示常用的ftp服务器端地址(ShowUserfulAddress)、添加常用的服务器地址(AddUsefulAddress)。

1.2.2. FTP客户端主要序列图

1) ShowServerFileList序列图

4

图 1-5 ShowServerFileList序列图

2) ChangeDirectory序列图

图 1-6 ChangeDirectory序列图

3) DownLoadFile序列图

5

图 1-7 DownLoadFile序列图

4) UpLoadFile序列图

图 1-8 UpLoadFile序列图

5) ListHistory序列图

6

图 1-9 ListHistory序列图

6) AddUsefulAddress序列图

图 1-10 AddUsefulAddress序列图

1.2.3. FTP客户端主要活动图

1) DownLoadFile活动图

7

图 1-11 DownLoadFile活动图

2) UpLoadFile活动图

图 1-12 UpLoadFile活动图

1.2.4. FTP客户端类图

1) 类关系图

8

图 1-13 FTP客户端类图

2) 边界类-IndexPage、DownLoadPage、HisetoryPage、UsefulAddressPage

图 1-14 边界类

客户端中的主要边界类是显示各功能模块的页面,包括显示主页的IndexPage,显示下载界面的DownLoadPage,显示历史记录的HistoryPage,显示常用地址的UsefulAddressPage。用于与用户的交互,获取用户输入的信息,显示信息。 3) 控制类-DataBaseHander

9

图 1-15 控制类-DataBaseHande

控制类-DataBaseHande,封装了对于数据库的操作,是数据库操作类,包括的方法有: 插入历史记录(InsertHistory) 查找历史记录(selectHistory) 插入常用地址(InsertUsefulAddr) 查找常用地址(selectUsefulAddr) 删除常用地址(DeleteUsefulAddr)

系统通过调用该类对象的该类方法实现对数据库的操作。 4) 控制类-FtpHander

图 1-16 控制类-FtpHander

控制类-FtpHander,封装了对于Ftp文件传输的操作,包括的方法有: 连接Ftp客户端(connect)

获取服务器端文件目录(getServerFileList) 上传文件(UpLoadFile) 下载文件(DownLoadFile)

通过该类实现对于文件的操作和服务器的连接和方法请求。 5) 控制类-LocalHander

10

图 1-17 控制类-LocalHander

控制类-LocalHander,封装了对于本地路径的操作,包括的方法有: 获取本地目录下的文件列表(GetLocalFileList) 客户端通过该类实现对本地文件的操作。 6) 角色类-FtpAddr

图 1-18 角色类-FtpAddr

角色类-FtpAddr,表示Ftp服务器端的抽象类。 属性:

Ftp服务器端名称(FtpName)string型 Ftp服务器端地址(FtpAddress)string型 方法:

获取服务器端名称(getFtpName) 设置服务器端名称(setFtpName) 获取服务器端IP地址(getFtpIPaddr) 设置服务器端IP地址(setFtpIPaddr) 7) 角色类-FileName

图 1-19 7)角色类-FileName

角色类-FileName,表示文件的抽象类。 属性:

文件名称(name)string型 文件大小(size)string型

11

方法:

获取文件名称(getName) 设置文件名称(setName) 获取文件大小(getSize) 设置文件大小(setSize)

1.3. 系统功能模块 1.3.1. 系统整体框架图

文件下载文件上传FTP客户端系统历史记录常用地址查询

图 1-20 系统整体框架图

1.3.2. 客户端功能模块

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

1. 下载功能模块:连接用户指定的FTP服务器,获取服务器目录下的文件列表,

当用户选择项目为文件时,点击下载可以下载用户所需要的文件。选定文件后提示用户将文件存储在何处,用户选择存储区后开始下载任务。依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件,通过FTP客户端进行下载。

2. 上传功能模块:用户可以自行选择本机上存储的文件,上传至FTP服务器。

12

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

3. 连接功能模块:将用户本机与指定的IP地址连接,验证用户命和密码,在

FTP服务器上进行注册。

4. 显示服务器文件模块:显示ftp服务器端的文件列表,包括切换服务器目录

功能。

显示服务器列表显示文件打开目录

图 1-21 显示服务器文件模块

5. 显示历史记录模块:列出以往的操作记录,方便用户查询所下载的文件信息。 6. 常用地址操作模块:包括查询常用地址和增加常用地址两个功能。

常用地址操作添加常用地址查询常用地址

图 1-22 常用地址操作模块

有了这六个基本的功能模块,客户端的基本应用功能即可实现。 1.3.3. 客户端界面设计

为了使用户能够方便的使用FTP客户端,在设计中我将数据输入和信息显示

13

整合在一个页面中,全部客户端仅包含一个主要的窗口,窗口中有4个WPF页分别包括以下四个主要页界面:

1、首页:用户打开软件所见到的的界面。

图 1-23 首页

2、文件传输界面:文件传输界面分为三层结构,第一层为用户下载地址输入层,第二层为目标FTP服务器端文件列表,第三层为本地下载路径中的文件列表。

14

图 1-24 文件传输界面

3、历史记录查询界面:从数据库中读取用户的操作历史记录,让用户查询曾经下载的文件信息。

15

图 1-25 历史记录查询界面

4、常用地址界面,列出常用的ftp服务器地址,方便用户使用,并提供自行添加地址的功能。

图 1-26 常用地址界面

1.4. 数据流程图

1.4.1. 客户端连接流程图

运行客户端后,首先是连接服务器,需要输入服务器IP地址点击连接按钮后开始连接服务器。

下图为客户端连接流程图。

16

开始用户输入用户名及密码发送用户名与密码至服务器连接服务器是是否连接成功否显示连接成功显示连接失败获取服务器文件列表刷新服务器文件显示文件列表开始图 1-27 客户端连接流程图

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

17

1.4.2. 上传子模块流程图

当用户点击上传按钮后,用户可以选择需要上传的文件,将本机上的文件上传至FTP服务器。下图为上传子模块流程图。

开始双击需上传文件获取上传的文件名连接服务器上传文件上传是否成功弹出对话框显示上传成功是否弹出对话框显示上传失败更新服务器文件列表结束图 1-28 上传模块流程图

18

上传的结果有两种,上传失败和成功,失败时会提示用户上传失败,原因可能是权限,如果成功上传,则提示上传成功。 1.4.3. 下载子模块流程图

当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上 的存储位置,将服务器上的文件下载至本机。 下图为上传子模块流程图。

开始获取文件列表双击需下载的文件连接服务器下载文件下载是否成功弹出对话框显示下载成功是否弹出对话框显示上传失败更新本地文件列表结束图 1-29 下载模块流程图

19

2. FTP客户端程序实现

2.1. WPF界面设计 2.1.1. 首页界面详细设计

首页左侧有四个按钮连接到不同功能的WPF页,主要界面为欢迎界面,用户可以通过点击按钮选择需要的功能。通过datagrid来布局整个页面。 主要Wpf设计代码:

Top