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

下载本文档

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

文档简介

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

2、col)协议即文件传输协议是 TCP/IP体系结构中的一个重要协议,专门用于局域网或In ternet中服务器和客户端之间 进行文件传输。FTP协议利用TCP的可靠传输服务,减少了不同文件系统间 的不兼容,实现了文件的传送功能。FTP极大的丰富了我们的网络生活,成 为互联网上不可缺少的服务方式之一。1设计容FTP使用客户/服务器方式,本课题就是设计一个 FTP客户端程序,其 具有以下基本功能:能完成 FTP的打开和关闭;能实现本地和远程目录的 浏览;能执行文件的上传和下载等有关操作。2开发工具简介2.1 Visual Basic 简介Basic发展到今天已经有很多版本,如 GW-Basic、Q

3、Basic、Visual Basic等等。其中Visual Basic是最容易学习与应用的程序语言之一,而 且其功能也非常强大。Visual Basic 6.0 自带的一些功能控件可以帮助我 们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。2.2 Windows API 函数介绍Win32 API也就是 Microsoft Windows 32位平台的应用程序编程接口 Windows API可以提供形形色色的服务,凡是在 Windows操作系统环境下开 发的应用程序,都可以调用 Windows API。2.3 In ternet Tran sfer控件介绍In ternet Tra

4、n sfer控件是微软为方便使用者设计In ter net应用程序所提供的一种控件。它提供两种In ternet protocol : HTTP及 FTP我们在 使用时,必须先设置好它的存取方式。存取方式分为直接连接或通过 proxy 来连接In ternet 网络两种。当我们设置好相关参数之后,In ternetTransfer控件提供两个method(OpenUR及Execute )让我们执行网络相 关操作,我们可以用这两个命令来执行一些In ternet comma nd。2.4 Windows Socket 控件Socket由UNIX操作系统逐步移植到 Windows Windows

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

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

7、如图1所示: FTP服务器运行FTP守护进程,等待用户的FTP请求。 用户运行FTP命令,请求FTP服务器为其服务 FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程 交互,建立文件传输控制连接,使用 TCP端 口 21。 用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTP-DATA建立数据连接,使用TCP端 口 20进行数据传 输。 本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATAf程。 用户继续输入FTP子命令,重复、的过程,直至用户输入quit命令, 双方拆除控制连接,结束文件传输,结束 FTP子进程。图1 FTP工作原理

8、示意图3详细设计3.1 程序数据流程图FTP的客户端程序设计的主要容如图2所示:客户登录模块、FTP服务 器目录浏览模块、上传和下载模块。设计流程:客户端程序先连接服务器, 然后浏览FTP服务器目录,选择文件下载或上传,进行文件数据传输,最 后断开连接2,3。3.2 系统界面设计系统界面主要包括以下几个方面的容:登录部分、远程目录浏览部分、 本地目录文件浏览部分等。系统界面是在新建窗体的基础上将其Caption改为“ FTP客户端”,增加相应的文本框、命令按钮等一些控件实现,具体 如图3所示r斷拜k按.1图2程序数据流程图图3系统界面3.3 模块设计登录模块为使客户端能登录服务器,须设置以下属

9、性: FTP服务器地址:txtserver用户名:txtuser密码:txtpassword端口号:txtport(般为 21 )txtuser及txtpassword代表登录此FTP服务器所需要的用户名及密码,若两者皆为空字符串,则代表是以anonymous匿名)身份登入;若输入 用户名与密码,Connect会以此做为其用户名及密码与FTP服务器建立连接; 随后是对“连接”按钮的设置,实现与服务器端的连接 。以下为“连接”命令按钮的代码:Private Sub cmdCo nn ect_Click()If Not bActiveSession And hOpe n <> 0 Th

10、e nIf txtServer.Text = "" The nMsgBox "Please en ter a server n ame!"Exit SubEnd IfDim nF lag As LongIf chkPassive.Value The nnF lag = INTERNET_FLAG_PASSIVEElsenF lag = 0End IfIf hConn ecti on = 0 ThenbActiveSessi on = FalseErrorOut Err.LastDllError, "I nternetCo nn ect"

11、;ElsebActiveSessi on = TrueEn ableUI (CBool(hOpe n)FillTreeViewCo ntrol (txtServer.Text)FtpE numDirectory ("")If Enu mltemNameBag.Co unt = 0 The n Exit SubFillTreeViewCo ntrol (txtServer.Text)End IfEnd IfEnd Sub332浏览模块3.321远程端浏览模块本模块是通过对treeview 控件的设置以及相关代码的编写来实现对 FTP服务器默认目录与文件的读取。当建立连接成功之

12、后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录 名称)。当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录 及浏览目录,否则Connect的执行将失效5,6,7。 本地浏览模块本地浏览模块通过 DriveComboBox DirectoryListBox 和 FileListBox 三个控件设计实现。DriveComboBox用于设置驱动器,DirectoryListBox 用于显示当前驱动器所有文件与目录,FileListBox 用于显示所选中的文件 夹中的所有文件。文件上传下载模块文件传输是一个双向的过程,既可以把服务器上的

13、文件下载到指定的 文件下,也可以把本地某文件上传到服务器。 文件下载模块文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的 下载。此功能实现主要是通过程序获取本地和远程的当前路径,区分被选 中的容类型为文件还是目录,若为文件时执行下载过程,否则退出。以下为“下载”命令按钮的代码8:Private Sub cmdGet_Click()Dim bRet As Boolea nDim szFileRemote As Stri ng, szDirRemote As String, szFileLocal As StringDim szTempStri ng As Stri ng

14、Dim n Pos As Long, n Temp As LongDim nodX As NodeSet n odX = TreeView1.SelectedItemIf bActiveSessi on The nIf nodX Is Nothing ThenMsgBox "Please select the item to GET!"Exit SubEnd IfszFileRemote = szTempStri ngn Pos = 0n Temp = 0Don Temp = In Str(1, szTempStri ng, "/", vbBi nary

15、Compare)If n Temp = 0 The n Exit DoszTempString= Right(szTempString,Len(szTempString) - nTemp)n Pos = n Temp + n PosLoopszDirRemote = Left(szFileRemote, n Pos)szFileRemote = Right(szFileRemote, Len( szFileRemote) - n Pos)szFileLocal = File1.Pathrcd szDirRemotebRet=FtpGetFile(hCo nn ectio n,szFileRem

16、ote,szFileLocal&"/"&szFileRemote,False, INTERNET_FLAG_RELOAD, dwType, 0)File1.RefreshIf bRet = False Then ErrorOut Err.LastDllError, "FtpGetFile"ElseMsgBox "Not in sessio n"End IfEnd Sub3.332文件上传模块文件上传是通过点击“上传”按钮来完成对选定的本地文件的上传。 上传文件基本与下载文件类似,但 FTP服务器端必须开放目录写入的权限

17、, 并允许修改FTP服务器目录下文件,否则,上传动作将失败。以下为“上传”命令按钮的代码9,10:Private Sub cmdPut_Click()Dim bRet As Boolea nDim szFileRemote As Stri ng, szDirRemote As String, szFileLocal As StringDim szTempStri ng As Stri ngDim n Pos As Long, n Temp As LongDim nodX As NodeSet n odX = TreeView1.SelectedltemIf bActiveSessi on Th

18、e nIf nodX Is Nothing ThenMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf nodX.lm age = "leaf" The nMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf File1.FileName = "" The nMsgBox "Please select a local file to pu

19、t"Exit SubEnd IfszTempStri ng = no dX.TextszDirRemote=Right(szTempStri ng,Len( szTempStri ng)Len( txtServer.Text)szFileRemote = File1.FileNameszFileLocal = File1.Path & "" & File1.FileNameIf (szDirRemote = "") The n szDirRemote = ""rcd szDirRemotebRet = Ftp

20、PutFile(hC onn ectio n,szFileLocal, szFileRemote, dwType,If bRet = False ThenErrorOut Err.LastDIIError, "FtpPutFile"Exit SubEnd IfDim no dChild As Node, n odNextChild As NodeSet n odChild = n odX.ChildDoIf nodChild Is Nothing Then Exit DoSet nodNextChild = n odChild.NextTreeView1.Nodes.Rem

21、ove no dChild .In dexIf nodNextChild Is Nothing Then Exit DoSet n odChild = n odNextChildLoopIf nodX.lm age = "closed" The nnodX.lm age = "ope n"End IfFtpE nu mDirectory (no dX.Text)FillTreeViewC on trol (n odX.Text)End IfEnd Sub4系统设计测试与分析首先找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的

22、权限。运行设计完成的FTP客户端,并填写相关容,点击“连接”按钮正常连入主机,具体如图4所示:可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录,我们可以点击 “上传”和“下载”两个按钮对文件进行上传或下载操作,非常简捷,方便。当完成相关操作后,我们可以点击“断开”命令按钮来断开FTP连接,以保证FTP用户正确安全的退出。实验测试表明我们设计的FTP客户端程序已经实 现了标准的FTP客户端的基本功能。图4连接成功后系统界面5结束语通过此次毕业设计,我发现了自己在做工作中的许多不足,认识到了 知识与实践联系的重要性,体会到只有不断的充实自己,不断的挑战自我, 才能在今后的工作生活中

23、获得更多的收获。毕业设计是对自己的一个挑战, 同时毕业设计也作为几年来学习成果的检验,让我学习到了很多东西。虽 然只有短短的几个月,但它将对我以后的前进道路产生深远的影响。在此 向所有帮助我的老师和同学致!参考文献1 希仁.计算机网络(第4版)M.:电子工业,2003:284-289.2 黄嘉辉.Visual Basic.NET网络程序设计M.:清华大学,2003:17-268.3 毅.VB应用技巧与常见问题你问我答M.:机械工业,2003:13-166.4 洁.同步FTP上载/下载程序的实现技术J.计算机系统应用,2002(6):38-40.吴光明.使用开发FTP客户端应用程序J.理工学院学报,2005,27(1):59-64.6 谷震离,杜根远,谷新黎.VB应用程序开发与设计J.师专

温馨提示

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

评论

0/150

提交评论