FTP客户端的设计与实现教学教材.doc

上传人:1595****071 文档编号:51482841 上传时间:2022-10-18 格式:DOC 页数:17 大小:326KB
返回 下载 相关 举报
FTP客户端的设计与实现教学教材.doc_第1页
第1页 / 共17页
FTP客户端的设计与实现教学教材.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《FTP客户端的设计与实现教学教材.doc》由会员分享,可在线阅读,更多相关《FTP客户端的设计与实现教学教材.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。FTP客户端的设计与实现-FTP客户端的设计与实现摘要:FTP(FileTransferProtocol)即文件传输协议是TCP/IP协议族中的一个应用层协议。FTP客户端利用TCP的可靠传输服务,减少了不同文件系统间的不兼容性,实现了文件的传送功能;而且它提供了直观的文件传输操作方式,用户只需要使用鼠标拖动选择就可以完成相关操作。文章主要介绍了FTP的相关知识、VisualBasic各种控件以及WindowsAPI函数的调用等内容。在此基础上文章最后介绍了如何使用VB完成FTP客户端应用程序的开发。关

2、键词:VB;FTP;WindowsAPI0引言FTP(FileTransferProtocol)协议即文件传输协议是TCP/IP体系结构中的一个重要协议,专门用于局域网或Internet中服务器和客户端之间进行文件传输。FTP协议利用TCP的可靠传输服务,减少了不同文件系统间的不兼容,实现了文件的传送功能。FTP极大的丰富了我们的网络生活,成为互联网上不可缺少的服务方式之一1。1设计内容FTP使用客户/服务器方式,本课题就是设计一个FTP客户端程序,其具有以下基本功能:能完成FTP链接的打开和关闭;能实现本地和远程目录的浏览;能执行文件的上传和下载等有关操作。2开发工具简介2.1VisualB

3、asic简介Basic发展到今天已经有很多版本,如GW-Basic、QBasic、VisualBasic等等。其中VisualBasic是最容易学习与应用的程序语言之一,而且其功能也非常强大。VisualBasic6.0自带的一些功能控件可以帮助我们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。2.2WindowsAPI函数介绍Win32API也就是MicrosoftWindows32位平台的应用程序编程接口。WindowsAPI可以提供形形色色的服务,凡是在Windows操作系统环境下开发的应用程序,都可以调用WindowsAPI。2.3InternetTransfer控件介绍I

4、nternetTransfer控件是微软为方便使用者设计Internet应用程序所提供的一种控件。它提供两种Internetprotocol:HTTP及FTP。我们在使用时,必须先设置好它的存取方式。存取方式分为直接连接或通过proxy来连接Internet网络两种。当我们设置好相关参数之后,InternetTransfer控件提供两个method(OpenURL及Execute)让我们执行网络相关操作,我们可以用这两个命令来执行一些Internetcommand。2.4WindowsSocket控件Socket由UNIX操作系统逐步移植到Windows,WindowsSocket规范于90年

5、代初,依次有1.0、1.1、2.0和3.0。WindowsSocket规范定义并记录了如何使用API;Socket是网络通信的基本操作单元,目前Windows支持两种套接口:流套接口和数据报套接口。TCP/IP中的TCP协议使用的是流套接口,提供了面向连接的、无差错的、发送先后顺序一致、包长度不限和非重复的网络信息包的传输。TCP/IP中的UDP则使用数据报套接口,该接口提供双向的、有序的、无重复并有记录边界的数据报服务。2.5FTP基础理论知识FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,同时在传输层使用TCP,所以FTP客户在和服务器建立连接

6、前就要经过一个被称作三次握手的过程。其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。但其违背了Internet的开放性,为此系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。习惯上,人们用自己的E-mail地址作为口令。2.6FTP工作原理FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式。下面以PORT方式为例,如图1所示:FTP服务器运行FTP守护进程,等待用户的FTP请求。用户运行FTP命

7、令,请求FTP服务器为其服务FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程交互,建立文件传输控制连接,使用TCP端口21。用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20进行数据传输。本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATA进程。用户继续输入FTP子命令,重复、的过程,直至用户输入quit命令,双方拆除控制连接,结束文件传输,结束FTP子进程。图1FTP工作原理示意图3详细设计3.1程序数据流程图FTP的客户端程序设计的主要内容如图2所示:客户登录模块、FTP服务器目录浏

8、览模块、上传和下载模块。设计流程:客户端程序先连接服务器,然后浏览FTP服务器目录,选择文件下载或上传,进行文件数据传输,最后断开连接2,3。3.2系统界面设计系统界面主要包括以下几个方面的内容:登录部分、远程目录浏览部分、本地目录文件浏览部分等。系统界面是在新建窗体的基础上将其Caption改为“FTP客户端”,增加相应的文本框、命令按钮等一些控件实现,具体如图3所示图2程序数据流程图图3系统界面3.3模块设计3.3.1登录模块为使客户端能登录服务器,须设置以下属性:FTP服务器地址:txtserver用户名:txtuser密码:txtpassword端口号:txtport(一般为21)tx

9、tuser及txtpassword代表登录此FTP服务器所需要的用户名及密码,若两者皆为空字符串,则代表是以anonymous(匿名)身份登入;若输入用户名与密码,Connect会以此做为其用户名及密码与FTP服务器建立连接;随后是对“连接”按钮的设置,实现与服务器端的连接4。以下为“连接”命令按钮的代码:PrivateSubcmdConnect_Click()IfNotbActiveSessionAndhOpen0ThenIftxtServer.Text=ThenMsgBoxPleaseenteraservername!ExitSubEndIfDimnFlagAsLongIfchkPassi

10、ve.ValueThennFlag=INTERNET_FLAG_PASSIVEElsenFlag=0EndIfIfhConnection=0ThenbActiveSession=FalseErrorOutErr.LastDllError,InternetConnectElsebActiveSession=TrueEnableUI(CBool(hOpen)FillTreeViewControl(txtServer.Text)FtpEnumDirectory()IfEnumItemNameBag.Count=0ThenExitSubFillTreeViewControl(txtServer.Tex

11、t)EndIfEndIfEndSub3.3.2浏览模块3.3.2.1远程端浏览模块本模块是通过对treeview控件的设置以及相关代码的编写来实现对FTP服务器默认目录与文件的读取。当建立连接成功之后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录名称)。当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录及浏览目录,否则Connect的执行将失效5,6,7。3.3.2.2本地浏览模块本地浏览模块通过DriveComboBox、DirectoryListBox和FileListBox三个控件设计实现。DriveComboBox用于设置驱动器,Dir

12、ectoryListBox用于显示当前驱动器所有文件与目录,FileListBox用于显示所选中的文件夹中的所有文件。3.3.3文件上传下载模块文件传输是一个双向的过程,既可以把服务器上的文件下载到指定的文件下,也可以把本地某文件上传到服务器。3.3.3.1文件下载模块文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的下载。此功能实现主要是通过程序获取本地和远程的当前路径,区分被选中的内容类型为文件还是目录,若为文件时执行下载过程,否则退出。以下为“下载”命令按钮的代码8:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteA

13、sString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselecttheitemtoGET!ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0Do

14、nTemp=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,szFileR

15、emote,szFileLocal&/&szFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,FtpGetFileElseMsgBoxNotinsessionEndIfEndSub3.3.3.2文件上传模块文件上传是通过点击“上传”按钮来完成对选定的本地文件的上传。上传文件基本与下载文件类似,但FTP服务器端必须开放目录写入的权限,并允许修改FTP服务器目录下文件,否则,上传动作将失败。以下为“上传”命令按钮的代码9,10:PrivateSub

16、cmdPut_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfnodX.Image=leafThenMs

17、gBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfFile1.FileName=ThenMsgBoxPleaseselectalocalfiletoputExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTempString)-Len(txtServer.Text)szFileRemote=File1.FileNameszFileLocal=File1.Path&File1.FileNameIf(szDirRemote=)ThenszDirRem

18、ote=rcdszDirRemotebRet=FtpPutFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,FtpPutFileExitSubEndIfDimnodChildAsNode,nodNextChildAsNodeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfn

19、odNextChildIsNothingThenExitDoSetnodChild=nodNextChildLoopIfnodX.Image=closedThennodX.Image=openEndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIfEndSub4系统设计测试与分析首先找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的权限。运行设计完成的FTP客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图4所示:可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录

20、,我们可以点击“上传”和“下载”两个按钮对文件进行上传或下载操作,非常简捷,方便。当完成相关操作后,我们可以点击“断开”命令按钮来断开FTP连接,以保证FTP用户正确安全的退出。实验测试表明我们设计的FTP客户端程序已经实现了标准的FTP客户端的基本功能。图4连接成功后系统界面5结束语通过此次毕业设计,我发现了自己在做工作中的许多不足,认识到了知识与实践联系的重要性,体会到只有不断的充实自己,不断的挑战自我,才能在今后的工作生活中获得更多的收获。毕业设计是对自己的一个挑战,同时毕业设计也作为几年来学习成果的检验,让我学习到了很多东西。虽然只有短短的几个月,但它将对我以后的前进道路产生深远的影响

21、。在此向所有帮助我的老师和同学致谢!参考文献1谢希仁.计算机网络(第4版)M.北京:电子工业出版社,2003:284-289.2黄嘉辉.VisualBasic.NET网络程序设计M.北京:清华大学出版社,2003:17-268.3张毅.VB应用技巧与常见问题你问我答M.北京:机械工业出版社,2003:13-166.4赵洁.同步FTP上载/下载程序的实现技术J.计算机系统应用,2002(6):38-40.5吴光明.使用开发FTP客户端应用程序J.河北理工学院学报,2005,27(1):59-64.6谷震离,杜根远,谷新黎.VB应用程序开发与设计J.许昌师专学报,2002,21(2):57-61.

22、7丁亚明.VB中的变量及参数传递J.微型电脑应用,2002(7):59-63.8严仲兴.浅谈面向对象的程序设计思想J.电脑知识与技术,2006(12):139-158.9李书浩,齐治昌.程序设计规则检查:一种保障软件质量的基本方法J.计算机科学,2003,30(11):148-151.10W.RichardStevensTCP/IP详解卷1M.北京:机械工业出版社,2000:14-324TheDesignandImplementofFTPClientGUOYuan-jiaAbstract:FTP(FileTransferProtocol)isaapplicationlayerprotocoli

23、nTCP/IPfamily.FTPclientterminalprogramalsooffersvisualanddirectwayoftransportingfiles.Clientscanfinishtherelevantoperationjustbydraggingthemouthandmakingchoice.ThetextmainlytellsyouhowtouseVisualBasicandWindowsAPIfunctiontoimplementeveryfunctionoftheFTPclient,finallyaccomplishthedevelopmentoftheVisualBasicapplicationprogram.Keywords:VB;FTP;WindowsAPI-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁