FTP客户端的设计与实现_第1页
FTP客户端的设计与实现_第2页
FTP客户端的设计与实现_第3页
FTP客户端的设计与实现_第4页
FTP客户端的设计与实现_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FTP客户端的设计与实现摘要:FTP(FileTransferProtocol)即文献传输协议是TCP/IP协议族中的一个应用层协议。FTP客户端运用TCP的可靠传输服务,减少了不同文献系统间的不兼容性,实现了文献的传送功能;并且它提供了直观的文献传输操作方式,用户只需要使用鼠标拖动选择就可以完毕相关操作。文章重要介绍了FTP的相关知识、VisualBasic各种控件以及WindowsAPI函数的调用等内容。在此基础上文章最后介绍了如何使用VB完毕FTP客户端应用程序的开发。关键词:VB;FTP;WindowsAPI0 引言FTP(FileTransferProtocol)协议即文献传输协议是TCP/IP体系结构中的一个重要协议,专门用于局域网或Internet中服务器和客户端之间进行文献传输。FTP协议运用TCP的可靠传输服务,减少了不同文献系统间的不兼容,实现了文献的传送功能。FTP极大的丰富了我们的网络生活,成为互联网上不可缺少的服务方式之一[1]。1 设计内容FTP使用客户/服务器方式,本课题就是设计一个FTP客户端程序,其具有以下基本功能:能完毕FTP链接的打开和关闭;能实现本地和远程目录的浏览;能执行文献的上传和下载等有关操作。2 开发工具简介2.1 VisualBasic简介Basic发展到今天已有很多版本,如GW-Basic、QBasic、VisualBasic等等。其中VisualBasic是最容易学习与应用的程序语言之一,并且其功能也非常强大。VisualBasic6.0自带的一些功能控件可以帮助我们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。2.2 WindowsAPI函数介绍Win32API也就是MicrosoftWindows32位平台的应用程序编程接口。WindowsAPI可以提供形形色色的服务,凡是在Windows操作系统环境下开发的应用程序,都可以调用WindowsAPI。2.3 InternetTransfer控件介绍InternetTransfer控件是微软为方便使用者设计Internet应用程序所提供的一种控件。它提供两种Internetprotocol:HTTP及FTP。我们在使用时,必须先设立好它的存取方式。存取方式分为直接连接或通过proxy来连接Internet网络两种。当我们设立好相关参数之后,InternetTransfer控件提供两个method(OpenURL及Execute)让我们执行网络相关操作,我们可以用这两个命令来执行一些Internetcommand。2.4 WindowsSocket控件Socket由UNIX操作系统逐步移植到Windows,WindowsSocket规范于90年代初,依次有1.0、1.1、2.0和3.0。WindowsSocket规范定义并记录了如何使用API;Socket是网络通信的基本操作单元,目前Windows支持两种套接口:流套接口和数据报套接口。TCP/IP中的TCP协议使用的是流套接口,提供了面向连接的、无差错的、发送先后顺序一致、包长度不限和非反复的网络信息包的传输。TCP/IP中的UDP则使用数据报套接口,该接口提供双向的、有序的、无反复并有记录边界的数据报服务。2.5 FTP基础理论知识FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,同时在传输层使用TCP,所以FTP客户在和服务器建立连接前就要通过一个被称作"三次握手"的过程。其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。使用FTP时必须一方面登录,在远程主机上获得相应的权限以后,方可上传或下载文献。但其违反了Internet的开放性,为此系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。习惯上,人们用自己的E-mail地址作为口令。2.6 FTP工作原理 FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式。下面以PORT方式为例,如图1所示:①FTP服务器运营FTP守护进程,等待用户的FTP请求。②用户运营FTP命令,请求FTP服务器为其服务

③FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程交互,建立文献传输控制连接,使用TCP端口21。④用户输入FTP子命令,服务器接受子命令,如命令对的,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20进行数据传输。⑤本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATA进程。⑥用户继续输入FTP子命令,反复④、⑤的过程,直至用户输入quit命令,双方拆除控制连接,结束文献传输,结束FTP子进程。图1FTP工作原理示意图3 具体设计3.1 程序数据流程图FTP的客户端程序设计的重要内容如图2所示:客户登录模块、FTP服务器目录浏览模块、上传和下载模块。设计流程:客户端程序先连接服务器,然后浏览FTP服务器目录,选择文献下载或上传,进行文献数据传输,最后断开连接[2,3]。3.2 系统界面设计系统界面重要涉及以下几个方面的内容:登录部分、远程目录浏览部分、本地目录文献浏览部分等。系统界面是在新建窗体的基础上将其Caption改为“FTP客户端”,增长相应的文本框、命令按钮等一些控件实现,具体如图3所示图2程序数据流程图图3系统界面3.3 模块设计3.3.1 登录模块为使客户端能登录服务器,须设立以下属性:◆FTP服务器地址:txtserver◆用户名:txtuser◆密码:txtpassword◆端标语:txtport(一般为21)txtuser及txtpassword代表登录此FTP服务器所需要的用户名及密码,若两者皆为空字符串,则代表是以anonymous(匿名)身份登入;若输入用户名与密码,Connect会以此做为其用户名及密码与FTP服务器建立连接;随后是对“连接”按钮的设立,实现与服务器端的连接[4]。以下为“连接”命令按钮的代码:PrivateSubcmdConnect_Click()IfNotbActiveSessionAndhOpen<>0ThenIftxtServer.Text=""ThenMsgBox"Pleaseenteraservername!"ExitSubEndIfDimnFlagAsLongIfchkPassive.ValueThennFlag=INTERNET_FLAG_PASSIVEElsenFlag=0EndIfIfhConnection=0ThenbActiveSession=FalseErrorOutErr.LastDllError,"InternetConnect"ElsebActiveSession=TrueEnableUI(CBool(hOpen))FillTreeViewControl(txtServer.Text)FtpEnumDirectory("")IfEnumItemNameBag.Count=0ThenExitSubFillTreeViewControl(txtServer.Text)EndIfEndIfEndSub3.3.2 浏览模块 远程端浏览模块本模块是通过对treeview控件的设立以及相关代码的编写来实现对FTP服务器默认目录与文献的读取。当建立连接成功之后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录名称)。当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录及浏览目录,否则Connect的执行将失效[5,6,7]。 本地浏览模块本地浏览模块通过DriveComboBox、DirectoryListBox和FileListBox三个控件设计实现。DriveComboBox用于设立驱动器,DirectoryListBox用于显示当前驱动器所有文献与目录,FileListBox用于显示所选中的文献夹中的所有文献。3.3.3 文献上传下载模块文献传输是一个双向的过程,既可以把服务器上的文献下载到指定的文献下,也可以把本地某文献上传到服务器。 文献下载模块文献下载是通过点击“下载”按钮来完毕对选定的远程目录下文献的下载。此功能实现重要是通过程序获取本地和远程的当前程径,区分被选中的内容类型为文献还是目录,若为文献时执行下载过程,否则退出。以下为“下载”命令按钮的代码[8]:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBox"PleaseselecttheitemtoGET!"ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0DonTemp=InStr(1,szTempString,"/",vbBinaryCompare)IfnTemp=0ThenExitDoszTempString=Right(szTempString,Len(szTempString)-nTemp)nPos=nTemp+nPosLoopszDirRemote=Left(szFileRemote,nPos)szFileRemote=Right(szFileRemote,Len(szFileRemote)-nPos)szFileLocal=File1.PathrcdszDirRemotebRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&"/"&szFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,"FtpGetFile"ElseMsgBox"Notinsession"EndIfEndSub文献上传模块文献上传是通过点击“上传”按钮来完毕对选定的本地文献的上传。上传文献基本与下载文献类似,但FTP服务器端必须开放目录写入的权限,并允许修改FTP服务器目录下文献,否则,上传动作将失败。以下为“上传”命令按钮的代码[9,10]:PrivateSubcmdPut_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBox"PleaseselectaremotedirectorytoPUTto!"ExitSubEndIfIfnodX.Image="leaf"ThenMsgBox"PleaseselectaremotedirectorytoPUTto!"ExitSubEndIfIfFile1.FileName=""ThenMsgBox"Pleaseselectalocalfiletoput"ExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTempString)-Len(txtServer.Text))szFileRemote=File1.FileNameszFileLocal=File1.Path&"\"&File1.FileNameIf(szDirRemote="")ThenszDirRemote="\"rcdszDirRemotebRet=FtpPutFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,"FtpPutFile"ExitSubEndIfDimnodChildAsNode,nodNextChildAsNodeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfnodNextChildIsNothingThenExitDoSetnodChild=nodNextChildLoopIfnodX.Image="closed"ThennodX.Image="open"EndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIf EndSub 4 系统设计测试与分析一方面找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的权限。运营设计完毕的FTP客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图4所示:可以看到左边的是远程服务器端的文献与目录,而右边是本地文献与目录,我们可以点击“上传”和“下载”两个按钮对文献进行上传或下载操作,非常简捷,方便。当完毕相关操作后,我们可以点击“断开”命令按钮来断开FTP连接,以保证FTP用户对的安全的退出。实验测试表白我们设计的FTP客户端程序已经实现了标准的FTP客户端的基本功能。图4连接成功后系统界面5 结束语通过本次毕业设计,我发现了自己在做工作中的许多局限性,结识到了知识与实践联系的重要性,体会到只有不断的充实自己,不断的挑战自我,才干在此后的工作生活中获得更多的收获。毕业设计是对自己的一个挑战,同时毕业设计也作为几年来学习成果的检查,让我学习到了很多东西。虽然只有短短的几个月,但它将对我以后的前进道路产生深远的影响。在此向所有帮助我的老师和同学致谢!参考文献[1]谢希仁.计算机网络(第4版)[M].北京:电子工业出版社,2023:284-289.[2]黄嘉辉.VisualBasic.NET网络程序设计[M].北京:清华大学出版社,2023:17-268.[3]张毅.VB应用技巧与常见问题你问我答[M].北京:机械工业出版社,2023:13-166.[4]赵洁.同步FTP上载/下载程序的实现技术[J].计算机系统应用,2023(6):38-40.[5]吴光明.使用开发FTP客户端应用程序[J].河北理工学院学报,2023,27(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论