基于C#的FTP客户端设计与实现.docx
- 文档编号:26283674
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:39
- 大小:691.60KB
基于C#的FTP客户端设计与实现.docx
《基于C#的FTP客户端设计与实现.docx》由会员分享,可在线阅读,更多相关《基于C#的FTP客户端设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。
基于C#的FTP客户端设计与实现
《基于C#的FTP客户端实现》
实验课程:
C#期末大作业
学生姓名:
学号:
专业班级:
指导老师:
完成日期:
2014年12月20日
基于C#的FTP客户端设计与实现
图1-1FTP工作模式图
上图中用户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环境简介
VisualStudio.NET是一个开发和运行软件的新环境,便于开发基于网络的服务,拥有丰富的运行库,支持多种编程语言编写的组件,具有跨语言平台的互操作能力。
C#是.NET平台中最重要的语言,它本身没有类库,而是使用.NET框架所提供的统一类库,用户也可以定义特定域的属性,并将它们应用于任何语言元素如类、接口等,所以对网络应用程序提供完整的支援,这使得程序员能够在新的微软.NET平台上快速开发出种类丰富的应用程序。
1.1.3.FtpWebRequest类
C#.NET类库的存在使它适合于一个不断发展的环境。
在类库中我们可以自由地加入新的方法和实例变量而不会影响用户程序的执行。
.NET平台封装了实现FTP功能的一些基础类,位于命名空间为System.Net下的FtpWebRequest类用于实现文件传输协议(FTP)客户端的一些基本功能。
二次封装了类FFP_Class,其成员包括stringtipserveriP(服务器地址)、stringftpUseriD(登陆账号)、stringftpPassword(登录密码)和FtpWebRequestreqFTP。
本文所使用的FtpWebRequest类的构造方法和主要方法如下:
FtpWebRequestreqFtp=(FtpWebRequest)FtpWebRequest.Create(newUri(Path));
此构造函数利用给出的主机名建立一条FTP连接,目的连接地址为Path所指定的地址,并建立URI对象。
reqFtp.UseBinary=true;
这条程序指定传输类型为Binary。
reqFtp.Credentials=newNetworkCredential(ftpUserId,ftpPassword);
此方法利用参数ftpUserId和ftpPassword登录到FTP服务器。
使用过Internet的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。
1.2.系统UML分析
1.2.1.FTP客户端用例图
1)0层用例图
图2-10层用例图
用户通过Ftp客户端系统进行文件传输。
2)1层用例图
图2-21层用例图
在Ftp客户端系统中,主要包括六个用例,分别是列出服务器端文件列表(ListServerFile)、从服务器端下载文件(DownLoadFile)、向服务器端上传文件(UpLoadFile)、列出历史记录(ListHistory)、对常用地址的操作(OpeatUsefulAddress)和输入用户登录信息(EnterUserInfo)。
其中,每一个用例都包含EnterUserInfo用例,列出服务器文件列表(ListServerFile)用例扩展了下载文件(DownLoadFile)用例。
3)二层用例图
a.ListServerFileList子用例图。
图2-32层用例图
ListServerFileList用例包含了两个子用例,分别为列出服务器端文件列表(ShowServerFileList)、打开目录(ChangeDirectory)。
打开目录用例指的是打开服务器端子目录,获取子目录。
b.OperatUsefulAddress子用例图。
图2-4OperatUsefulAddress子用例图
OperatUsefulAddress用例包含了两个子用例图,分别为显示常用的ftp服务器端地址(ShowUserfulAddress)、添加常用的服务器地址(AddUsefulAddress)。
1.2.2.FTP客户端主要序列图
1)ShowServerFileList序列图
图2-5ShowServerFileList序列图
2)ChangeDirectory序列图
图2-6ChangeDirectory序列图
3)DownLoadFile序列图
图2-7DownLoadFile序列图
4)UpLoadFile序列图
图2-8UpLoadFile序列图
5)ListHistory序列图
图2-9ListHistory序列图
6)AddUsefulAddress序列图
图2-10AddUsefulAddress序列图
1.2.3.FTP客户端主要活动图
1)DownLoadFile活动图
图2-11DownLoadFile活动图
2)UpLoadFile活动图
图2-12UpLoadFile活动图
1.2.4.FTP客户端类图
1)类关系图
图2-13FTP客户端类图
2)边界类-IndexPage、DownLoadPage、HisetoryPage、UsefulAddressPage
图2-14边界类
客户端中的主要边界类是显示各功能模块的页面,包括显示主页的IndexPage,显示下载界面的DownLoadPage,显示历史记录的HistoryPage,显示常用地址的UsefulAddressPage。
用于与用户的交互,获取用户输入的信息,显示信息。
3)控制类-DataBaseHander
图2-15控制类-DataBaseHande
控制类-DataBaseHande,封装了对于数据库的操作,是数据库操作类,包括的方法有:
插入历史记录(InsertHistory)
查找历史记录(selectHistory)
插入常用地址(InsertUsefulAddr)
查找常用地址(selectUsefulAddr)
删除常用地址(DeleteUsefulAddr)
系统通过调用该类对象的该类方法实现对数据库的操作。
4)控制类-FtpHander
图2-16控制类-FtpHander
控制类-FtpHander,封装了对于Ftp文件传输的操作,包括的方法有:
连接Ftp客户端(connect)
获取服务器端文件目录(getServerFileList)
上传文件(UpLoadFile)
下载文件(DownLoadFile)
通过该类实现对于文件的操作和服务器的连接和方法请求。
5)控制类-LocalHander
图2-17控制类-LocalHander
控制类-LocalHander,封装了对于本地路径的操作,包括的方法有:
获取本地目录下的文件列表(GetLocalFileList)
客户端通过该类实现对本地文件的操作。
6)角色类-FtpAddr
图2-18角色类-FtpAddr
角色类-FtpAddr,表示Ftp服务器端的抽象类。
属性:
Ftp服务器端名称(FtpName)string型
Ftp服务器端地址(FtpAddress)string型
方法:
获取服务器端名称(getFtpName)
设置服务器端名称(setFtpName)
获取服务器端IP地址(getFtpIPaddr)
设置服务器端IP地址(setFtpIPaddr)
7)角色类-FileName
图2-197)角色类-FileName
角色类-FileName,表示文件的抽象类。
属性:
文件名称(name)string型
文件大小(size)string型
方法:
获取文件名称(getName)
设置文件名称(setName)
获取文件大小(getSize)
设置文件大小(setSize)
1.3.系统功能模块
1.3.1.系统整体框架图
图2-20系统整体框架图
1.3.2.客户端功能模块
FTP客户端作为用户连接FTP服务器的工具,需要具备一些基本功能模块,如连接、上传、下载等,其中最主要的五大功能模块如下:
1.下载功能模块:
连接用户指定的FTP服务器,获取服务器目录下的文件列表,当用户选择项目为文件时,点击下载可以下载用户所需要的文件。
选定文件后提示用户将文件存储在何处,用户选择存储区后开始下载任务。
依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件,通过FTP客户端进行下载。
2.上传功能模块:
用户可以自行选择本机上存储的文件,上传至FTP服务器。
在用户选择存储在服务器的位置后,点击上传,选择所需要上传的文件,即可将文件上传至服务器。
3.连接功能模块:
将用户本机与指定的IP地址连接,验证用户命和密码,在FTP服务器上进行注册。
4.显示服务器文件模块:
显示ftp服务器端的文件列表,包括切换服务器目录功能。
图2-21显示服务器文件模块
5.显示历史记录模块:
列出以往的操作记录,方便用户查询所下载的文件信息。
6.常用地址操作模块:
包括查询常用地址和增加常用地址两个功能。
图2-22常用地址操作模块
有了这六个基本的功能模块,客户端的基本应用功能即可实现。
1.3.3.客户端界面设计
为了使用户能够方便的使用FTP客户端,在设计中我将数据输入和信息显示整合在一个页面中,全部客户端仅包含一个主要的窗口,窗口中有4个WPF页分别包括以下四个主要页界面:
1、首页:
用户打开软件所见到的的界面。
图2-23首页
2、文件传输界面:
文件传输界面分为三层结构,第一层为用户下载地址输入层,第二层为目标FTP服务器端文件列表,第三层为本地下载路径中的文件列表。
图2-24文件传输界面
3、历史记录查询界面:
从数据库中读取用户的操作历史记录,让用户查询曾经下载的文件信息。
图2-25历史记录查询界面
4、常用地址界面,列出常用的ftp服务器地址,方便用户使用,并提供自行添加地址的功能。
图2-26常用地址界面
1.4.数据流程图
1.4.1.客户端连接流程图
运行客户端后,首先是连接服务器,需要输入服务器IP地址点击连接按钮后开始连接服务器。
下图为客户端连接流程图。
图2-27客户端连接流程图
连接的结果有两种,即图中显示的连接失败和连接成功。
1.4.2.
上传子模块流程图
当用户点击上传按钮后,用户可以选择需要上传的文件,将本机上的文件上传至FTP服务器。
下图为上传子模块流程图。
图2-28上传模块流程图
上传的结果有两种,上传失败和成功,失败时会提示用户上传失败,原因可能是权限,如果成功上传,则提示上传成功。
1.4.3.下载子模块流程图
当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上
的存储位置,将服务器上的文件下载至本机。
下图为上传子模块流程图。
图2-29下载模块流程图
2.FTP客户端程序实现
2.1.WPF界面设计
2.1.1.首页界面详细设计
首页左侧有四个按钮连接到不同功能的WPF页,主要界面为欢迎界面,用户可以通过点击按钮选择需要的功能。
通过datagrid来布局整个页面。
主要Wpf设计代码:
--上半部分导航页面-->
--下半部分主题界面-->
--四个按钮-->
MouseEnter="Button_MouseEnter"Click="Button_Click"MouseLeave="Button_MouseLeave"MouseDown="Button_MouseDown"MouseUp="Button_MouseUp"/> MouseEnter="Button_MouseEnter"Click="Button_Click"MouseLeave="Button_MouseLeave"MouseDown="Button_MouseDown"MouseUp="Button_MouseUp"/> MouseEnter="Button_MouseEnter"Click="Button_Click"MouseLeave="Button_MouseLeave"MouseDown="Button_MouseDown"MouseUp="Button_MouseUp"/> MouseEnter="Button_MouseEnter"Click="Button_Click"MouseLeave="Button_MouseLeave"MouseDown="Button_MouseDown"MouseUp="Button_MouseUp"/> Name="framePage"NavigationUIVisibility="Hidden"Source="PageWelcome.xaml"Background="AliceBlue"Width="588"Height="492"> 2.1.2.文件传输界面详细设计 文件传输界面分为三层结构,第一层为用户下载地址输入层,第二层为目标FTP服务器端文件列表,第三层为本地下载路径中的文件列表。 通过Grid将整个页面分为三行,每一行嵌入一个stackpanel,并在第一行再次用Grid布局将第一行分为三列,第一列放提示信息用的label,第二列放输入用的inputtex,第三列放一个button控件。 页面结构wpf代码: --服务器界面--> 第一层用来记录用来输入服务器的站点,用户名和密码信息,然后将信息发送到服务器进行验证,利用inputBox控件来实现。 在程序运行时,用户在输入框url中输入的FTP服务器站点。 利用点击按钮触发onClick事件获取输入框中的数据,将url中的数据存储至path变量中,将username中的数据存储至username中; Wpf设计代码: "HorizontalAlignment="Right"/> 第二层的作用是是显示服务器文件列表,利用Datagrid控件来实现。 在客户端主界面创建一个Datagrid,命名为gridServerFileList,并置于主界面中间,该表格包括三个数据项: 文件名file,文件大小filesizes,修改日期filedates,使用一个List 当客户端连接上服务器时,表格数据自动更新,主要功能使用getServerfFileList()函数实现。 当服务器连接切换到当前目录,通过对WebRequestMethods.Ftp的method赋值为ListDirectory并获取来自服务器端的应答流,读取应答流来实现。 Wpf设计代码: GridLinesVisibility="None"IsReadOnly="True"MouseEnter="gridFileList_MouseEnter"SelectionChanged="gridFileList_SelectionChanged"MouseUp="gridFileList_MouseUp"MouseDoubleClick="gridFileList_MouseDoubleClick"> /Border> 第三层的作用是是显示本地文件列表,和第二层一样利用Datagrid控件来实现。 在客户端主界面创建一个Datagrid,命名为localFileList,并置于主界面中间,该表格包括三个数据项: 文件名file,文件大小filesizes,修改日期filedates,使用一个List 当客户端连接上本地时,表格数据自动更新,主要功能使用getLocalFileList()函数实现。 当服务器连接切换到当前目录,通过对调用GetLocalFileList()函数获取来自本地目录的应答流,读取应答流来实现。 Wpf设计代码:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C# FTP 客户端 设计 实现