FTP客户端的设计与实现.docx

上传人:b****6 文档编号:7726467 上传时间:2023-01-26 格式:DOCX 页数:11 大小:102.79KB
下载 相关 举报
FTP客户端的设计与实现.docx_第1页
第1页 / 共11页
FTP客户端的设计与实现.docx_第2页
第2页 / 共11页
FTP客户端的设计与实现.docx_第3页
第3页 / 共11页
FTP客户端的设计与实现.docx_第4页
第4页 / 共11页
FTP客户端的设计与实现.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

FTP客户端的设计与实现.docx

《FTP客户端的设计与实现.docx》由会员分享,可在线阅读,更多相关《FTP客户端的设计与实现.docx(11页珍藏版)》请在冰豆网上搜索。

FTP客户端的设计与实现.docx

FTP客户端的设计与实现

FTP客户端的设计与实现

 

摘要:

FTP(FileTransferProtocol)即文件传输协议是TCP/IP协议族中的一个应用层协议。

FTP客户端利用TCP的可靠传输服务,减少了不同文件系统间的不兼容性,实现了文件的传送功能;而且它提供了直观的文件传输操作方式,用户只需要使用鼠标拖动选择就可以完成相关操作。

文章主要介绍了FTP的相关知识、VisualBasic各种控件以及WindowsAPI函数的调用等内容。

在此基础上文章最后介绍了如何使用VB完成FTP客户端应用程序的开发。

关键词:

VB;FTP;WindowsAPI

0引言

FTP(FileTransferProtocol)协议即文件传输协议是TCP/IP体系结构中的一个重要协议,专门用于局域网或Internet中服务器和客户端之间进行文件传输。

FTP协议利用TCP的可靠传输服务,减少了不同文件系统间的不兼容,实现了文件的传送功能。

FTP极大的丰富了我们的网络生活,成为互联网上不可缺少的服务方式之一[1]。

1设计内容

FTP使用客户/服务器方式,本课题就是设计一个FTP客户端程序,其具有以下基本功能:

能完成FTP链接的打开和关闭;能实现本地和远程目录的浏览;能执行文件的上传和下载等有关操作。

2开发工具简介

2.1VisualBasic简介

Basic发展到今天已经有很多版本,如GW-Basic、QBasic、VisualBasic等等。

其中VisualBasic是最容易学习与应用的程序语言之一,而且其功能也非常强大。

VisualBasic6.0自带的一些功能控件可以帮助我们实现网络通信的功能,是我们网络编程中的一个重要的编程工具。

2.2WindowsAPI函数介绍

Win32API也就是MicrosoftWindows32位平台的应用程序编程接口。

WindowsAPI可以提供形形色色的服务,凡是在Windows操作系统环境下开发的应用程序,都可以调用WindowsAPI。

2.3InternetTransfer控件介绍

InternetTransfer控件是微软为方便使用者设计Internet应用程序所提供的一种控件。

它提供两种Internetprotocol:

HTTP及FTP。

我们在使用时,必须先设置好它的存取方式。

存取方式分为直接连接或通过proxy来连接Internet网络两种。

当我们设置好相关参数之后,InternetTransfer控件提供两个method(OpenURL及Execute)让我们执行网络相关操作,我们可以用这两个命令来执行一些Internetcommand。

2.4WindowsSocket控件

Socket由UNIX操作系统逐步移植到Windows,WindowsSocket规范于90年代初,依次有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客户在和服务器建立连接前就要经过一个被称作"三次握手"的过程。

其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。

但其违背了Internet的开放性,为此系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。

习惯上,人们用自己的E-mail地址作为口令。

2.6FTP工作原理

FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:

PORT方式和PASV方式。

下面以PORT方式为例,如图1所示:

①FTP服务器运行FTP守护进程,等待用户的FTP请求。

②用户运行FTP命令,请求FTP服务器为其服务 

③FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程

交互,建立文件传输控制连接,使用TCP端口21。

④用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20进行数据传输。

⑤本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATA进程。

⑥用户继续输入FTP子命令,重复④、⑤的过程,直至用户输入quit命令,

双方拆除控制连接,结束文件传输,结束FTP子进程。

图1FTP工作原理示意图

3详细设计

3.1程序数据流程图

FTP的客户端程序设计的主要内容如图2所示:

客户登录模块、FTP服务器目录浏览模块、上传和下载模块。

设计流程:

客户端程序先连接服务器,然后浏览FTP服务器目录,选择文件下载或上传,进行文件数据传输,最后断开连接[2,3]。

3.2系统界面设计

系统界面主要包括以下几个方面的内容:

登录部分、远程目录浏览部分、本地目录文件浏览部分等。

系统界面是在新建窗体的基础上将其Caption改为“FTP客户端”,增加相应的文本框、命令按钮等一些控件实现,具体如图3所示

图2程序数据流程图

图3系统界面

3.3模块设计

3.3.1登录模块

为使客户端能登录服务器,须设置以下属性:

◆FTP服务器地址:

txtserver

◆用户名:

txtuser

◆密码:

txtpassword

◆端口号:

txtport(一般为21)

txtuser及txtpassword代表登录此FTP服务器所需要的用户名及密码,若两者皆为空字符串,则代表是以anonymous(匿名)身份登入;若输入用户名与密码,Connect会以此做为其用户名及密码与FTP服务器建立连接;随后是对“连接”按钮的设置,实现与服务器端的连接[4]。

以下为“连接”命令按钮的代码:

PrivateSubcmdConnect_Click()

IfNotbActiveSessionAndhOpen<>0Then

IftxtServer.Text=""Then

MsgBox"Pleaseenteraservername!

"

ExitSub

EndIf

DimnFlagAsLong

IfchkPassive.ValueThen

nFlag=INTERNET_FLAG_PASSIVE

Else

nFlag=0

EndIf

IfhConnection=0Then

bActiveSession=False

ErrorOutErr.LastDllError,"InternetConnect"

Else

bActiveSession=True

EnableUI(CBool(hOpen))

FillTreeViewControl(txtServer.Text)

FtpEnumDirectory("")

IfEnumItemNameBag.Count=0ThenExitSub

FillTreeViewControl(txtServer.Text)

EndIf

EndIf

EndSub

3.3.2浏览模块

3.3.2.1远程端浏览模块

本模块是通过对treeview控件的设置以及相关代码的编写来实现对FTP服务器默认目录与文件的读取。

当建立连接成功之后,通过函数调用取得FTP服务器端默认最大的目录(FTP服务器针对不同用户开放不同的目录名称)。

当然FTP服务器端也必须开放目录读取权限,允许客户端连接登录及浏览目录,否则Connect的执行将失效[5,6,7]。

3.3.2.2本地浏览模块

本地浏览模块通过DriveComboBox、DirectoryListBox和FileListBox三个控件设计实现。

DriveComboBox用于设置驱动器,DirectoryListBox用于显示当前驱动器所有文件与目录,FileListBox用于显示所选中的文件夹中的所有文件。

3.3.3文件上传下载模块

文件传输是一个双向的过程,既可以把服务器上的文件下载到指定的文件下,也可以把本地某文件上传到服务器。

3.3.3.1文件下载模块

文件下载是通过点击“下载”按钮来完成对选定的远程目录下文件的下载。

此功能实现主要是通过程序获取本地和远程的当前路径,区分被选中的内容类型为文件还是目录,若为文件时执行下载过程,否则退出。

以下为“下载”命令按钮的代码[8]:

PrivateSubcmdGet_Click()

DimbRetAsBoolean

DimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsString

DimszTempStringAsString

DimnPosAsLong,nTempAsLong

DimnodXAsNode

SetnodX=TreeView1.SelectedItem

IfbActiveSessionThen

IfnodXIsNothingThen

MsgBox"PleaseselecttheitemtoGET!

"

ExitSub

EndIf

szTempString=TreeView1.SelectedItem.Text

szFileRemote=szTempString

nPos=0

nTemp=0

Do

nTemp=InStr(1,szTempString,"/",vbBinaryCompare)

IfnTemp=0ThenExitDo

szTempString=Right(szTempString,Len(szTempString)-nTemp)

nPos=nTemp+nPos

Loop

szDirRemote=Left(szFileRemote,nPos)

szFileRemote=Right(szFileRemote,Len(szFileRemote)-nPos)

szFileLocal=File1.Path

rcdszDirRemote

bRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&"/"&szFileRemote,

False,INTERNET_FLAG_RELOAD,dwType,0)

File1.Refresh

IfbRet=FalseThenErrorOutErr.LastDllError,"FtpGetFile"

Else

MsgBox"Notinsession"

EndIf

EndSub

3.3.3.2文件上传模块

文件上传是通过点击“上传”按钮来完成对选定的本地文件的上传。

上传文件基本与下载文件类似,但FTP服务器端必须开放目录写入的权限,并允许修改FTP服务器目录下文件,否则,上传动作将失败。

以下为“上传”命令按钮的代码[9,10]:

PrivateSubcmdPut_Click()

DimbRetAsBoolean

DimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsString

DimszTempStringAsString

DimnPosAsLong,nTempAsLong

DimnodXAsNode

SetnodX=TreeView1.SelectedItem

IfbActiveSessionThen

IfnodXIsNothingThen

MsgBox"PleaseselectaremotedirectorytoPUTto!

"

ExitSub

EndIf

IfnodX.Image="leaf"Then

MsgBox"PleaseselectaremotedirectorytoPUTto!

"

ExitSub

EndIf

IfFile1.FileName=""Then

MsgBox"Pleaseselectalocalfiletoput"

ExitSub

EndIf

szTempString=nodX.Text

szDirRemote=Right(szTempString,Len(szTempString)-Len(txtServer.Text))

szFileRemote=File1.FileName

szFileLocal=File1.Path&"\"&File1.FileName

If(szDirRemote="")ThenszDirRemote="\"

rcdszDirRemote

bRet=FtpPutFile(hConnection,szFileLocal,szFileRemote,dwType,0)

IfbRet=FalseThen

ErrorOutErr.LastDllError,"FtpPutFile"

ExitSub

EndIf

DimnodChildAsNode,nodNextChildAsNode

SetnodChild=nodX.Child

Do

IfnodChildIsNothingThenExitDo

SetnodNextChild=nodChild.Next

TreeView1.Nodes.RemovenodChild.Index

IfnodNextChildIsNothingThenExitDo

SetnodChild=nodNextChild

Loop

IfnodX.Image="closed"Then

nodX.Image="open"

EndIf

FtpEnumDirectory(nodX.Text)

FillTreeViewControl(nodX.Text)

EndIf

EndSub

4系统设计测试与分析

首先找到一个可以使用的FTP服务器的地址或自己配置一个FTP服务器,随后取得相应的权限。

运行设计完成的FTP客户端,并填写相关内容,点击“连接”按钮正常连入主机,具体如图4所示:

可以看到左边的是远程服务器端的文件与目录,而右边是本地文件与目录,我们可以点击“上传”和“下载”两个按钮对文件进行上传或下载操作,非常简捷,方便。

当完成相关操作后,我们可以点击“断开”命令按钮来断开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]谷震离,杜根远,谷新黎.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]W.RichardStevens.TCP/IP详解卷1[M].北京:

机械工业出版社,2000:

14-324.

 

TheDesignandImplementofFTPClient

GUOYuan-jia

Abstract:

FTP(FileTransferProtocol)isaapplicationlayerprotocolinTCP/IPfamily.FTPclientterminalprogramalsooffersvisualanddirectwayoftransportingfiles.Clientscanfinishtherelevantoperationjustbydraggingthemouthandmakingchoice.ThetextmainlytellsyouhowtouseVisualBasicandWindowsAPIfunctiontoimplementeveryfunctionoftheFTPclient,finallyaccomplishthedevelopmentoftheVisualBasicapplicationprogram.

Keywords:

VB;FTP;WindowsAPI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1