《基于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