《FTP客户端的设计与实现.doc》由会员分享,可在线阅读,更多相关《FTP客户端的设计与实现.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流FTP客户端的设计与实现.精品文档.FTP客户端的设计与实现摘要:FTP(File Transfer Protocol)即文件传输协议是TCP/IP协议族中的一个应用层协议。FTP客户端利用TCP的可靠传输服务,减少了不同文件系统间的不兼容性,实现了文件的传送功能;而且它提供了直观的文件传输操作方式,用户只需要使用鼠标拖动选择就可以完成相关操作。文章主要介绍了FTP的相关知识、Visual Basic各种控件以及Windows API函数的调用等内容。在此基础上文章最后介绍了如何使用VB完成FTP客户端应用程序的开发。关键词:VB ; FTP
2、 ; Windows API 0引言FTP(File Transfer Protocol)协议即文件传输协议是TCP/IP体系结构中的一个重要协议,专门用于局域网或Internet中服务器和客户端之间进行文件传输。FTP协议利用TCP的可靠传输服务,减少了不同文件系统间的不兼容,实现了文件的传送功能。FTP极大的丰富了我们的网络生活,成为互联网上不可缺少的服务方式之一1。1设计内容FTP使用客户/服务器方式,本课题就是设计一个FTP客户端程序,其具有以下基本功能:能完成FTP链接的打开和关闭;能实现本地和远程目录的浏览;能执行文件的上传和下载等有关操作。2开发工具简介2.1Visual Bas
3、ic简介Basic 发展到今天已经有很多版本,如 GW-Basic 、QBasic 、Visual Basic 等等。其中Visual Basic 是最容易学习与应用的程序语言之一,而且其功能也非常强大。Visual Basic 6.0自带的一些功能控件可以帮助我们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。2.2Windows API函数介绍Win32 API也就是Microsoft Windows 32位平台的应用程序编程接口。Windows API可以提供形形色色的服务,凡是在Windows操作系统环境下开发的应用程序,都可以调用Windows API。2.3Interne
4、t Transfer控件介绍Internet Transfer 控件是微软为方便使用者设计Internet应用程序所提供的一种控件。它提供两种Internet protocol:HTTP及FTP。我们在使用时,必须先设置好它的存取方式。存取方式分为直接连接或通过proxy来连接Internet网络两种。当我们设置好相关参数之后,Internet Transfer 控件提供两个method(OpenURL及Execute)让我们执行网络相关操作,我们可以用这两个命令来执行一些Internet command。2.4Windows Socket控件Socket由 UNIX操作系统逐步移植到Wind
5、ows,Windows Socket规范于90年代初,依次有1.0、1.1、2.0和3.0。Windows Socket规范定义并记录了如何使用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协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式。下面以PORT方式为例,如图1所示:FTP服务器运行F
7、TP守护进程,等待用户的FTP请求。用户运行FTP命令,请求FTP服务器为其服务FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程 交互,建立文件传输控制连接,使用TCP端口21。用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20进行数据传输。 本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATA进程。 用户继续输入FTP子命令,重复、的过程,直至用户输入quit命令,双方拆除控制连接,结束文件传输,结束FTP子进程。图1 FTP工作原理示意图3详细设计3.1程序数据流程图FTP的客户端程
8、序设计的主要内容如图2所示:客户登录模块、FTP服务器目录浏览模块、上传和下载模块。设计流程:客户端程序先连接服务器,然后浏览FTP服务器目录,选择文件下载或上传,进行文件数据传输,最后断开连接2,3。3.2系统界面设计系统界面主要包括以下几个方面的内容:登录部分、远程目录浏览部分、本地目录文件浏览部分等。系统界面是在新建窗体的基础上将其Caption改为“FTP客户端”,增加相应的文本框、命令按钮等一些控件实现,具体如图3所示图2 程序数据流程图图3 系统界面3.3模块设计3.3.1登录模块为使客户端能登录服务器,须设置以下属性:FTP服务器地址 :txtserver 用户名 :txtuse
9、r密码 :txtpassword 端口号 :txtport(一般为21 ) txtuser及txtpassword代表登录此FTP服务器所需要的用户名及密码,若两者皆为空字符串,则代表是以anonymous(匿名)身份登入;若输入用户名与密码,Connect会以此做为其用户名及密码与FTP服务器建立连接;随后是对“连接”按钮的设置,实现与服务器端的连接4。以下为“连接”命令按钮的代码:Private Sub cmdConnect_Click() If Not bActiveSession And hOpen 0 Then If txtServer.Text = Then MsgBox Plea
10、se enter a server name! Exit Sub End If Dim nFlag As Long If chkPassive.Value Then nFlag = INTERNET_FLAG_PASSIVE Else nFlag = 0 End If If hConnection = 0 Then bActiveSession = False ErrorOut Err.LastDllError, InternetConnect Else bActiveSession = True EnableUI (CBool(hOpen) FillTreeViewControl (txtS
11、erver.Text) FtpEnumDirectory () If EnumItemNameBag.Count = 0 Then Exit Sub FillTreeViewControl (txtServer.Text) End If End IfEnd Sub 3.3.2浏览模块3.3.2.1远程端浏览模块本模块是通过对treeview控件的设置以及相关代码的编写来实现对FTP服务器默认目录与文件的读取。当建立连接成功之后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录名称)。当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录及浏览目录,否则
12、Connect的执行将失效5,6,7。3.3.2.2本地浏览模块本地浏览模块通过DriveComboBox、DirectoryListBox和FileListBox三个控件设计实现。DriveComboBox用于设置驱动器,DirectoryListBox用于显示当前驱动器所有文件与目录,FileListBox用于显示所选中的文件夹中的所有文件。3.3.3文件上传下载模块文件传输是一个双向的过程,既可以把服务器上的文件下载到指定的文件下,也可以把本地某文件上传到服务器。3.3.3.1文件下载模块文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的下载。此功能实现主要是通过程序获取本地和
13、远程的当前路径,区分被选中的内容类型为文件还是目录,若为文件时执行下载过程,否则退出。以下为“下载”命令按钮的代码8:Private Sub cmdGet_Click() Dim bRet As Boolean Dim szFileRemote As String, szDirRemote As String, szFileLocal As String Dim szTempString As String Dim nPos As Long, nTemp As Long Dim nodX As Node Set nodX = TreeView1.SelectedItem If bActiveS
14、ession Then If nodX Is Nothing Then MsgBox Please select the item to GET! Exit Sub End If szTempString = TreeView1.SelectedItem.Text szFileRemote = szTempString nPos = 0 nTemp = 0 Do nTemp = InStr(1, szTempString, /, vbBinaryCompare) If nTemp = 0 Then Exit Do szTempString = Right(szTempString, Len(s
15、zTempString) - nTemp) nPos = nTemp + nPos Loop szDirRemote = Left(szFileRemote, nPos) szFileRemote = Right(szFileRemote, Len(szFileRemote) - nPos) szFileLocal = File1.Path rcd szDirRemote bRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&/&szFileRemote, False, INTERNET_FLAG_RELOAD, dwType, 0) Fil
16、e1.Refresh If bRet = False Then ErrorOut Err.LastDllError, FtpGetFile Else MsgBox Not in session End IfEnd Sub3.3.3.2文件上传模块文件上传是通过点击“上传”按钮来完成对选定的本地文件的上传。上传文件基本与下载文件类似,但FTP服务器端必须开放目录写入的权限,并允许修改FTP服务器目录下文件,否则,上传动作将失败。以下为“上传”命令按钮的代码9,10:Private Sub cmdPut_Click() Dim bRet As Boolean Dim szFileRemote As
17、 String, szDirRemote As String, szFileLocal As String Dim szTempString As String Dim nPos As Long, nTemp As Long Dim nodX As Node Set nodX = TreeView1.SelectedItem If bActiveSession Then If nodX Is Nothing Then MsgBox Please select a remote directory to PUT to! Exit Sub End If If nodX.Image = leaf T
18、hen MsgBox Please select a remote directory to PUT to! Exit Sub End If If File1.FileName = Then MsgBox Please select a local file to put Exit Sub End If szTempString = nodX.Text szDirRemote = Right(szTempString, Len(szTempString) - Len(txtServer.Text) szFileRemote = File1.FileName szFileLocal = File
19、1.Path & & File1.FileName If (szDirRemote = ) Then szDirRemote = rcd szDirRemote bRet = FtpPutFile(hConnection, szFileLocal, szFileRemote, dwType, 0) If bRet = False Then ErrorOut Err.LastDllError, FtpPutFile Exit Sub End If Dim nodChild As Node, nodNextChild As Node Set nodChild = nodX.Child Do If
20、nodChild Is Nothing Then Exit Do Set nodNextChild = nodChild.Next TreeView1.Nodes.Remove nodChild.Index If nodNextChild Is Nothing Then Exit Do Set nodChild = nodNextChild Loop If nodX.Image = closed Then nodX.Image = open End If FtpEnumDirectory (nodX.Text) FillTreeViewControl (nodX.Text) End IfEnd
21、 Sub4系统设计测试与分析首先找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的权限。运行设计完成的FTP客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图4所示:可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录,我们可以点击 “上传”和“下载”两个按钮对文件进行上传或下载操作,非常简捷,方便。当完成相关操作后,我们可以点击“断开”命令按钮来断开FTP连接,以保证FTP用户正确安全的退出。实验测试表明我们设计的FTP客户端程序已经实现了标准的FTP客户端的基本功能。图4 连接成功后系统界面5结束语通过此次毕业设计,我发现了自己在做工作中
22、的许多不足,认识到了知识与实践联系的重要性,体会到只有不断的充实自己,不断的挑战自我,才能在今后的工作生活中获得更多的收获。毕业设计是对自己的一个挑战,同时毕业设计也作为几年来学习成果的检验,让我学习到了很多东西。虽然只有短短的几个月,但它将对我以后的前进道路产生深远的影响。在此向所有帮助我的老师和同学致谢!参 考 文 献1 谢希仁.计算机网络(第4版)M.北京:电子工业出版社,2003:284-289.2 黄嘉辉.Visual Basic.NET网络程序设计M.北京:清华大学出版社,2003:17-268.3 张毅.VB应用技巧与常见问题你问我答M.北京:机械工业出版社,2003:13-16
23、6.4 赵洁.同步FTP上载/下载程序的实现技术J.计算机系统应用,2002(6):38-40.5 吴光明.使用开发FTP客户端应用程序J.河北理工学院学报,2005,27(1): 59-64. 6 谷震离,杜根远,谷新黎.VB应用程序开发与设计J.许昌师专学报,2002,21(2): 57-61. 7 丁亚明.VB中的变量及参数传递J.微型电脑应用,2002(7):59-63.8 严仲兴.浅谈面向对象的程序设计思想J.电脑知识与技术,2006(12):139-158.9 李书浩,齐治昌.程序设计规则检查:一种保障软件质量的基本方法J.计算机科学, 2003,30(11):148-151.10
24、 W.Richard StevensTCP/IP详解卷1M.北京:机械工业出版社,2000:14-324The Design and Implement of FTP ClientGUO Yuan-jiaAbstract: FTP (File Transfer Protocol) is a application layer protocol in TCP/IP family. FTP client terminal program also offers visual and direct way of transporting files. Clients can finish the relevant operation just by dragging the mouth and making choice. The text mainly tells you how to use Visual Basic and Windows API function to implement every function of the FTP client, finally accomplish the development of the Visual Basic application program.Key words: VB ; FTP ; Windows API