您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > FTP客户端软件的设计与开发
FTP客户端软件的设计与开发-1-一、设计思想本软件了解通过FTP协议传送文件的方法,学会使用C#实现一个简单的FTP客户端。随着计算机网络的完善和成熟人们通过FTP下载资源也普遍增加,特别是对于局域网用户,FTP服务器大大方便了同学们共享资源。FTP协议(FileTransferProtocol)即远程文件传输协议,是一个用于简化IP网络上系统之间文件传送的协议,FTP是TCP/IP的一种具体应用,它工作在OSI模型的第7层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,FTP建立的就是一个可靠的连接。采用FTP协议可使Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供的下载服。Internet成为了一个巨型的软件仓库。将使用两条单独的TCP连接,一条专用于发送FTP命令,称为控制连接,另一条则专用于传递数据,称为数据连接。1)控制连接客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。2)数据连接FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户机/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟踪。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文档。FTP是Internet上用来传送文件的协议。它是为了我们能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。通过FTP协议,我们就可以跟Internet上的FTP服务器进行文件的上传或下载。本软件以实现一个简单易用的FTP客户端为目标,通过分析FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用VisualStudio2010工具对FTP客户端进行设计,用VisualStudio2010编程工具设计和实现了FTP服务与客户端设计,从而实现了对FTP客户端的开发。FTP客户端软件的设计与开发-2-二、算法流程图图1系统的整体框架图图2客户端连接流程图FTP客户端软件登陆模块上传下载删除创建目录刷新用户输入服务器地址、用户名密码及端口号查询服务器判断在显示目录文件列表显示文件进行错误处理是否FTP客户端软件的设计与开发-3-图3上传模块流程图三、源代码下面给出的是用程序FTPClient.cs中的源代码:usingSystem;//导入名字空间usingSystem.Net;usingSystem.Collections.Generic;//包含定义各种对象集合的接口和类usingSystem.IO;usingSystem.Text;//包含表示ASCII等字符编码的类usingSystem.Net.Sockets;usingSystem.Windows.Forms;namespacemyftp//命名空间{publicclassftpStrPrase{//定义一个类#region文件属性点击上传按钮弹出文件选择对话框判断弹出文本框显示上传成功弹出文本框显示上传失败是否选择需要上传的文件FTP客户端软件的设计与开发-4-///summary//运行时生成相应的文档信息///保存含扩展名的文件////summaryprivateString_fullname;//保存含扩展名的文件publicStringFullname{get{return_fullname;}set{_fullname=value;}}///summary//运行时生成相应的文档信息///文件/目录名////summaryprivateString_filename;publicStringFilename//文件/目录名{get{return_filename;}set{_filename=value;}}///summary//运行时生成相应的文档信息///扩展名////summaryprivateString_ext;publicStringExt//扩展名{get{return_ext;}set{_ext=value;}}///summary//运行时生成相应的文档信息///文件类型f/d////summaryprivateString_type=f;publicStringType//文件类型{get{return_type;}set{_type=value;}}///summary//运行时生成相应的文档信息///文件大小FTP客户端软件的设计与开发-5-////summaryprivateInt32_size=0;publicInt32Size//文件大小{get{return_size;}set{_size=value;}}#endregionpublicftpStrPrase(StringtoPrase,StringosVer){Int32iStartPos=50;//定义iStartPosif(toPrase.Length51)//判断参数长度{return;}for(;toPrase[iStartPos]!='';++iStartPos);_fullname=toPrase.Substring(iStartPos,toPrase.Length-iStartPos-1).Trim();//检索子字符串_filename=_fullname;_ext=;_type=Convert.ToString(toPrase[0]=='d'?'d':'f');//转换数据类型if(!_type.Equals(d))//判断文件类型{Int32dotPos=_fullname.LastIndexOf(.)+1;//报告索引位置if(dotPos0){_ext=_fullname.Substring(dotPos,_filename.Length-dotPos);//_filename=_fullname.Substring(0,dotPos-1);}Int32sStartPos=31,sEndPos=0;//定义变量for(;toPrase[sStartPos]=='';++sStartPos);for(sEndPos=sStartPos;toPrase[sEndPos+1]!='';++sEndPos);_size=Int32.Parse(toPrase.Substring(sStartPos,sEndPos-sStartPos+1));}}publicvoidtest(){MessageBox.Show(filename:+_filename+,ext:+_ext+,type:+_type);//显示消息框}FTP客户端软件的设计与开发-6-}///summary//运行时生成相应的文档信息///FTPClient的摘要说明。////summarypublicclassFTPClient//FTPClient的摘要说明{#region构造函数///summary//运行时生成相应的文档信息///缺省构造函数////summarypublicFTPClient()//缺省构造函数{strRemoteHost=;//IPstrRemotePath=;//目录strRemoteUser=;//用户名strRemotePass=;//密码strRemotePort=21;//端口bConnected=false;//是否登录}///summary//运行时生成相应的文档信息///构造函数////summarypublicFTPClient(stringremoteHost,stringremotePath,stringremoteUser,stringremotePass,intremotePort)//构造函数{strRemoteHost=remoteHost;strRemotePath=remotePath;strRemoteUser=remoteUser;strRemotePass=remotePass;strRemotePort=remotePort;Connect();//建立连接}#endregion#region登陆///summary//运行时生成相应的文档信息///FTP服务器IP地址////summaryprivatestringstrRemoteHost;publicstringRemoteHost//FTP服务器IP地址{get{FTP客户端软件的设计与开发-7-returnstrRemoteHost;//返回ip地址}set{strRemoteHost=value;}}///summary//运行时生成相应的文档信息///FTP服务器端口////summaryprivateintstrRemotePort;publicintRemotePort//FTP服务器端口{get{returnstrRemotePort;//返回端口号}set{strRemotePort=value;}}///summary//运行时生成相应的文档信息///当前服务器目录////summaryprivatestringstrRemotePath;//当前服务器目录publicstringRemotePath{get{returnstrRemotePath;//返回目录}set{strRemotePath=value;}}///summary//运行时生成相应的文档信息///登录用户账号////summaryprivatestringstrRemoteUser;publicstringRemoteUser//登录用户账号{setFTP客户端软件的设计与开发-8-{strRemoteUser=value;//返回用户名}}///summary//运行时生成相应的文档信息///用户登录密码////summaryprivatestringstrRemotePass;//用户登录密码publicstringRemotePass{set{strRemotePass=value;}}//
本文标题:FTP客户端软件的设计与开发
链接地址:https://www.777doc.com/doc-4382627 .html