




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FTP客户端的设计与实现摘要:FTP(FileTransferProtocol)即文件传输协议是 TCP/IP 协议族中的一个应用层协议。FTP 客户端利用 TCP 的可靠传输服务,减少了不同文件系统间的不兼容性,实现了文件的传送功能;而且它提供了直观的文件传输操作方式,用户只需要使用鼠标拖动选择就可以完成相关操作。文章主要介绍了 FTP 的相关知识、VisualBasic 各种控件以及 WindowsAPI 函数的调用等内容。在此基础上文章最后介绍了如何使用 VB 完成FTP 客户端应用程序的开发。关键词:VB;FTP;WindowsAPI0引言FTP(FileTransferProtoco
2、l)协议即文件传输协议是 TCP/IP 体系结构中的一个重要协议,专门用于局域网或 Internet 中服务器和客户端之间进行文件传输。FTP 协议利用 TCP 的可靠传输服务,减少了不同文件系统间的不兼容,实现了文件的传送功能。FTP 极大的丰富了我们的网络生活,成为互联网上不可缺少的服务方式之一1。1设计内容FTP 使用客户/服务器方式,本课题就是设计一个 FTP 客户端程序,其具有以下基本功能:能完成 FTP 链接的打开和关闭;能实现本地和远程目录的浏览;能执行文件的上传和下载等有关操作。2开发工具简介2.1VisualBasic 简介Basic 发展到今天已经有很多版本,如 GW-Ba
3、sic、QBasic、VisualBasic 等等。其中 VisualBasic 是最容易学习与应用的程序语言之一,而且其功能也非常强大。VisualBasic6.0 自带的一些功能控件可以帮助我们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。2.2WindowsAPI 函数介绍Win32API 也就是 MicrosoftWindows32 位平台的应用程序编程接口。WindowsAPI 可以提供形形色色的服务,凡是在 Windows 操作系统环境下开发的应用程序,都可以调用 WindowsAPI。2.3InternetTransfer 控件介绍InternetTransfer 控
4、件是微软为方便使用者设计 Internet 应用程序所提供的一种控件。它提供两种 Internetprotocol:HTTPRFTR 我们在使用时,必须先设置好它的存取方式。存取方式分为直接连接或通过 proxy 来连接 Internet网络两种。当我们设置好相关参数之后,InternetTransfer 控件提供两个 method(OpenURlMExecute)让我们执行网络相关操作,我们可以用这两个命令来执行一些 Internetcommand。2.4WindowsSocket 控件Socket 由 UNIX 操作系统逐步移植到 WindowsWindowsSocket 规范于 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 模型的第四层,即应用层,同时在传输层使用
6、 TCP 所以 FTP 客户在和服务器建立连接前就要经过一个被称作三次握手的过程。其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。使用 FTP 时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。但其违背了 Internet 的开放性,为此系统管理员建立了一个特殊的用户 ID,名为 anonymous,Internet 上的任何人在任何地方都可使用该用户 ID。 习惯上,人们用自己的 E-mail 地址作为口令。2.6FTP 工作原理FTP 协议中, 控制连接均由客户端发起, 而数据连接有两种工作方式: POR访式和 PAS 昉式。 下面以 POR 仿式为例,
7、 如图 1 所示:FTP 服务器运行 FTP守护进程,等待用户的 FTP 请求。用户运行 FTP 命令,请求 FTP 服务器为其服务FTP 守护进程收到用户的 FTP 请求后,派生出 FTP 子进程与用户进程交互,建立文件传输控制连接,使用 TC 啮口 21。用户输入 FTP 子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程 FTP-DATA 建立数据连接,使用 TC 啮口 20 进行数据传输。本次子命令请求的数据传输完毕,拆除数据连接,结束 FTP-DATAS 程。用户继续输入 FTP 子命令,重复、的过程,直至用户输入 quit 命令,双方拆除控制连接,结束文件传输,结束
8、FTP 子进程。FTP辰务卷图 1FTP 工作原理示意图3详细设计程序数据流程图FTP 的客户端程序设计的主要内容如图 2 所示:客户登录模块、FTP 服务器目录浏览模块、上传和下载模块。设计流程:客户端程序先连接服务器,然后浏览 FTP 服务器目录,选择文件下载或上传,进行文件数据传输,最后断开连接23。系统界面设计系统界面主要包括以下几个方面的内容:登录部分、远程目录浏览部分、本地目录文件浏览部分等。 系统界面是在新建窗体的基础上将其 Caption 改为“FTP客户端”,增加相应的文本框、命令按钮等一些控件实现,具体如图 3 所示FIT-DATAFTP请求螂战储) (新加-图 2 程序数
9、据流程图图 3 系统界面3.3 模块设计登录模块为使客户端能登录服务器,须设置以下属性:第 4 页(共 11 页)FTP 服务器地址:txtserver用户名:txtuser密码:txtpassword端口号:txtport(一般为 21)txtuser 及 txtpassword 代表登录此 FTP 服务器所需要的用户名及密码, 若两者皆为空字符串,则代表是以 anonymous 倦名)身份登入;若输入用户名与密码Connect 会以此做为其用户名及密码与 FTP 服务器建立连接;随后是对“连接”按钮的设置,实现与服务器端的连接4。以下为“连接”命令按钮的代码:PrivateSubcmdCo
10、nnect_Click()IfNotbActiveSessionAndhOpen0ThenIftxtServer.Text=ThenMsgBoxPleaseenteraservername!ExitSubEndIfDimnFlagAsLongIfchkPassive.ValueThennFlag=INTERNET_FLAG_PASSIVEElsenFlag=0EndIfIfhConnection=0ThenbActiveSession=FalseErrorOutErr.LastDllError,InternetConnectElsebActiveSession=TrueEnableUI(CBo
11、ol(hOpen)FillTreeViewControl(txtServer.Text)FtpEnumDirectory()IfEnumItemNameBag.Count=0ThenExitSubFillTreeViewControl(txtServer.Text)EndIfEndIfEndSub浏览模块远程端浏览模块本模块是通过对 treeview 控件的设置以及相关代码的编写来实现对 FTP 服务器默认目录与文件的读取。当建立连接成功之后,通过函数调用取得 FTP 服务器端默认最大的目录(FTP 服务器针对不同用户开放不同的目录名称)。当然 FTP 服务器端也必须开放目录读取权限,允许客户
12、端连接登录及浏览目录,否则 Connect 的执行将失效567。本地浏览模块本地浏览模块通过 DriveComboBoxDirectoryListBox 和 FileListBox 三个控件设计实现。DriveComboBox 用于设置驱动器,DirectoryListBox 用于显示当前驱动器所有文件与目录,FileListBox 用于显示所选中的文件夹中的所有文件。文件上传下载模块文件传输是一个双向的过程,既可以把服务器上的文件下载到指定的文件下,也可以把本地某文件上传到服务器。文件下载模块文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的下载。此功能实现主要是通过程序获取本地和
13、远程的当前路径,区分被选中的内容类型为文件还是目录,若为文件时执行下载过程,否则退出。以下为“下载”命令按钮的代码8:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPl
14、easeselecttheitemtoGET!ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0DonTemp=InStr(1,szTempString,/,vbBinaryCompare)IfnTemp=0ThenExitDoszTempString=Right(szTempString,Len(szTempString)-nTemp)nPos=nTemp+nPosLoopszDirRemote=Left(szFileRemote,nPos)szFileRemot
15、e=Right(szFileRemote,Len(szFileRemote)-nPos)szFileLocal=File1.PathrcdszDirRemotebRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&/&szFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,FtpGetFileElseMsgBoxNotinsessionEndIfEndSub文件上传模块文件上传是
16、通过点击“上传”按钮来完成对选定的本地文件的上传。上传文件基本与下载文件类似,但 FTP 服务器端必须开放目录写入的权限,并允许修改 FTP 服务器目录下文件,否则,上传动作将失败。以下为“上传”命令按钮的代码9,10:PrivateSubcmdPut_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.Selected
17、ItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfnodX.Image=leafThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfFile1.FileName=ThenMsgBoxPleaseselectalocalfiletoputExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTem
18、pString)-Len(txtServer.Text)szFileRemote=File1.FileNameszFileLocal=File1.Path&File1.FileNameIf(szDirRemote=)ThenszDirRemote=rcdszDirRemotebRet=FtpPutFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,FtpPutFileExitSubEndIfDimnodChildAsNode,nodNextChildAsN
19、odeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfnodNextChildIsNothingThenExitDoSetnodChild=nodNextChildLoopIfnodX.Image=closedThennodX.Image=openEndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIfEndSub4系统设计测试
20、与分析首先找到一个可以使用的 FTP 服务器的地址或自己配置一个 FTP 服务器,随后取得相应的权限。运行设计完成的 FTP 客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图 4 所示:可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录,我们可以点击“上传”和“下载”两个按钮对文件进行上传或下载操作,非常简捷,方便。当完成相关操作后,我们可以点击“断开”命令按钮来断开 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):5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同框架协议书
- 技术辅导合同协议书模板
- 文件合同协议书
- 销货合同协议书范本
- 馒头店转让合同协议书
- 2025年工业互联网平台生物识别技术在工业生产效率提升中的应用效果报告
- 合同协议书模
- 简易车辆维修合同协议书
- 2025年大数据在旅游行业精准营销中的应用策略报告
- 2025年自动驾驶卡车在物流运输中的智能驾驶辅助系统报告
- 高中生物新人教版选择性必修1第2章第5节人脑的高级功能课件(20张)
- 2024年重庆中考英语试题及答案(A卷)
- 医疗服务售后服务保证协议书
- JTG-T-D81-2006公路交通安全设施设计细则
- 样本相关系数课件
- MH-T 5060-2022民用机场填海工程技术规范
- 业主授权租户安装充电桩委托书
- 毕业设计论文-智能电表的设计
- 桥式起重机定期检查记录表
- 2024年江西南昌市留置看护队员招聘笔试参考题库附带答案详解
- 建筑工程技术专业《建筑结构》课程标准
评论
0/150
提交评论