版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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浏览模块远程端浏览模块本模块是通过对treeview控件的设置以及相关代码的编写来实现对FTP服务器默认目录与文件的读取。当建立连接成功之后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录名称)。当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录及浏览目录,否则Connect的执行将失效5,6,7。本地浏览模块本地浏览模块通过DriveComboBox、DirectoryListBox和FileListBox三个控件设计实现。DriveComboBox用于设置驱动器,DirectoryListBox用
12、于显示当前驱动器所有文件与目录,FileListBox用于显示所选中的文件夹中的所有文件。3.3.3文件上传下载模块文件传输是一个双向的过程,既可以把服务器上的文件下载到指定的文件下,也可以把本地某文件上传到服务器。文件下载模块文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的下载。此功能实现主要是通过程序获取本地和远程的当前路径,区分被选中的内容类型为文件还是目录,若为文件时执行下载过程,否则退出。以下为“下载”命令按钮的代码8:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAs
13、String,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselecttheitemtoGET!ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0DonTemp=InStr(1,szTempS
14、tring,/,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&/&s
15、zFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,FtpGetFileElseMsgBoxNotinsessionEndIfEndSub文件上传模块文件上传是通过点击“上传”按钮来完成对选定的本地文件的上传。上传文件基本与下载文件类似,但FTP服务器端必须开放目录写入的权限,并允许修改FTP服务器目录下文件,否则,上传动作将失败。以下为“上传”命令按钮的代码9,10:PrivateSubcmdPut_Click()DimbRetAsBoole
16、anDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfnodX.Image=leafThenMsgBoxPleaseselectaremotedirec
17、torytoPUTto!ExitSubEndIfIfFile1.FileName=ThenMsgBoxPleaseselectalocalfiletoputExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTempString)-Len(txtServer.Text)szFileRemote=File1.FileNameszFileLocal=File1.Path&File1.FileNameIf(szDirRemote=)ThenszDirRemote=rcdszDirRemotebRet=FtpPu
18、tFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,FtpPutFileExitSubEndIfDimnodChildAsNode,nodNextChildAsNodeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfnodNextChildIsNothingThenExit
19、DoSetnodChild=nodNextChildLoopIfnodX.Image=closedThennodX.Image=openEndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIfEndSub4系统设计测试与分析首先找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的权限。运行设计完成的FTP客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图4所示:可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录,我们可以点击“上传”和“下载”两个按钮对文件进行上传或
20、下载操作,非常简捷,方便。当完成相关操作后,我们可以点击“断开”命令按钮来断开FTP连接,以保证FTP用户正确安全的退出。实验测试表明我们设计的FTP客户端程序已经实现了标准的FTP客户端的基本功能。图4连接成功后系统界面5结束语通过此次毕业设计,我发现了自己在做工作中的许多不足,认识到了知识与实践联系的重要性,体会到只有不断的充实自己,不断的挑战自我,才能在今后的工作生活中获得更多的收获。毕业设计是对自己的一个挑战,同时毕业设计也作为几年来学习成果的检验,让我学习到了很多东西。虽然只有短短的几个月,但它将对我以后的前进道路产生深远的影响。在此向所有帮助我的老师和同学致谢!参考文献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谷震离,杜根远,谷
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能在线旅游预订系统开发合同
- 人工智能技术开发委托合同
- 商业保险合同(2024年版)
- 简单版房屋装修合同范本4
- 2025汽车担保借款合同范本
- 2025农场建设用地租赁合同
- 2024年水泥原料采购合同
- 2024年物联网项目合作合同
- 2024年电子商务平台客户关系管理合同
- 2024年版商业供电合作合同样本一
- 2024年小学五年级科学教学工作总结(2篇)
- 2024-2025学年冀教版数学五年级上册期末测试卷(含答案)
- 2025年上半年浙江金华市永康市选调市纪检监察信息中心工作人员2人重点基础提升(共500题)附带答案详解
- 美国制造业经济2024年度报告-2024-12-宏观大势
- 小区充电桩安全协议书范本(2篇)
- 2024年安徽省公务员录用考试《行测》真题及答案解析
- 车间班长年度述职报告
- 2024-2025学年高三年级上册10月月考 生物试题
- 医美行业股权合作合同
- 丝绸之路上的民族学习通超星期末考试答案章节答案2024年
- 无人机操作教案
评论
0/150
提交评论