VB489 基于VB的FTP客户端系统设计
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
一台计算机上。目前匿名FTP是Internet上进行资源共享的主要途径之一。FTP服务使用的是时下使用广泛的客户端/服务器(C/S)模式,即设立一台计算机作为提供FTP服务的服务器,它接受其它计算机的FTP服务请求并响应,提供FTP服务。这些需要服务的计算机叫做客户端。这种客户端/服务器(C/S)模式在网络服务上有很重要的应用,于是对于网络应用程序的开发也分为服务器端和客户端两部分。由于客户端软件使用人数众多,它的易用性、高效性就有了更高的要求。
通过使用功能强大的Visual Basic 6.0和它提供的专门针对Internet网络编程标准程序类库Wininet开发FTP客户端软件,不但能体现客户端/服务器(C/S)模式开发的特点,还可以开发出更好的应用软件。 [来源:http://www.think58.com]
通常用于将网页从创作者上传到服务器上供人使用或者从服务器上下传文件,极大地促进了网络文件的资源共享。
从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户机/服务器 (Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。
think58
[资料来源:http://www.THINK58.com]
起初, FTP并不是应用于IP网络上的协议,而是ARPANET网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。
使用FTP的主要目的,随着时代的发展,你们越来越重视时间和效率,当在某个范围内人们要互相使用别人的电子文档或某些视频资料的时候,派人去某个地方拿是个既浪费时间和金钱的事情.而使用网络来传输是个相等好的选择.而在传输文件过程中.使用FTP协议要比其他协议(如HTTP)更加有效,这主要有两个原因:
1 .FTP协议就是用来传输文件的,而且仅仅用来传输文件。它不像HTTP还有其他的一些功能,FTP的惟一工作就是确保文件正确的传输,除了校验发送和接收的文件是否一致以外,它不会像HTTP那样停下来翻译文件的内容。 think58.com
2. 通常主机的FTP事务处理是FTP服务器的惟一工作。既然这样,计算机的处理器资源被完全投入到FTP事务处理中,而不会被几个竞争服务器(处理器的)时间的工作所分割。
1.2 国内外FTP软件发展现状
从前,文件传输协议(FTP)是惟一可行的选择。现在,可以使用很多种并非专门为文件传输设计的技术来传输文件,如电子邮件、即时消息、互联网中继聊天、甚至网络服务器等。这些技术当中的每一种技术都能够利用人们每天为某种目的使用的非常熟悉的单一的界面。虽然这些技术非常方便,但是,每一种技术都缺乏某种无法形容的强大功能。例如,电子邮件服务器通常限制附件容量的大小,网络服务器对于批量下载比较麻烦,而且大型文件的下载很容易出错。
然而,在众多的文件传输的选择中,成熟的FTP服务器在继续发展,并且发展得比以往任何时候都要强大。
现在,任何胜任文件传输任务的FTP服务器都有很多旨在管理其应用的功能。这些功能包括用户身份识别、文件传输策略(例如,上载和下载的比例、带宽瓶颈和IP过滤器等)和详细的活动记录。FTP服务器在继续发展,增加一些新的功能,特别是解决安全领域、虚拟化和自动化等问题的功能。
安全已经很快成了一个炙手可热的问题。多年以来,FTP服务器与客户机之间的通信都是“以透明的方式”进行的,也就是说登录和口令信息很容易被拦截。现在,BulletProof FTP、SecureFTP、SurgeFTP、TitanFTP和WS_FTP等FTP服务器软件都支持SSL/TLS(安全套接层/传输层安全),并且使用与保密网站相同的 本文来自think58
[来源:http://think58.com]
等软件支持的虚拟文件夹能够把文件组合起来,而不管这些文件在本地文件系统中是什么结构。因此,本地文件夹结构不需要进行改变以满足FTP服务器的需求。FTP用户能够获得虚拟批准的平均访问权限(如读、写和删除等),而不必在本地系统中修改用户“真实”的批准权限。CrushFTP软件甚至还支持其它FTP服务器的虚拟化。这就意味着它们的内容能够通过CrushFTP提供,就像提供任何本地的文件一样。
自动化使FTP服务器超越了它们原来仅作为传输文件库的基本功能。SecureFTP和CrushFTP软件启动的事件以及WS_FTP软件中的脚本计划能够让FTP服务器根据环境采取行动。例如,事件触发机制能够监视某个要下载的文件,并且向管理员发出警报。排程器能够按照固定的间隔时间自动传递文件。CrushFTP和RaidenFTPD软件中的互联网中继聊天连接提供了一个控制接口,可以同聊天组用户交流,把聊天信息转换为FTP指令。
参考P2P网络流行的情况,FTP服务器正在开始利用多部分文件传输的强大功能。例如,SecureFTP和WS_FTP等软件能够把一个文件分成许多部分,并且将这许多部分同时传送出去。这种方法显著减少了传送一个大型文件的时间。大多数当前的FTP服务器软件都有这项功能,预计这种功能将在FTP软件中更广泛地应用。 copyright think58
[来源:http://www.think58.com]
1.3 FTP工作模式
FTP采用C/S(客户机/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET的默认端口时23,用户从头到尾都只需和这个端口打交道。但是FTP通信除了有一个默认端口21之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。
1.4 FTP客户端的设计意义
通过本课题的研究,然后我们可以了解FTP工作的流程及工作方式,了解Windows XP在网络中的通信协议,Windows XP在网络中的通信端口,C/S的网络通信模式等内容。以便将所学的知识应用到某个小型局域网内,实现文件的上传下载的服务。真正实现文件等资料的传输,使人们的工作效率有所提高。
[来源:http://www.think58.com]
第2章 开发工具
2.1Visual Basic 6.0 简介
Visual Basic,简称VB,是Microsoft公司推出的一种Windows应用程序开发工具。是当今世界上使用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程方法。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最简便的方法。
何谓 Visual Basic?“Visual”指的是采用可视化的开发图形用户界面(GUI)的方法,一般不需要编写大量代码去描述界面元素的外观和位置,而只要把需要的控件拖放到屏幕上的相应位置即可;“Basic”指的是BASIC语言,因为VB是在原有的BASIC语言的基础上发展起来的,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何 Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。
VB提供了学习版、专业版和企业版,用以满足不同的开发需要。学习版使编程人员很容易地开发Windows和Windows NT的应用程序;专业版为专业编程人员提供了功能完备的开发工具;企业版允许专业人员以小组的形式来创建强健的分布式应用程序。 [资料来源:www.THINK58.com]
nServerPort 指示与哪一个端口连接。在我们的例子中使用的值为0,它指示的是默认的端口21。
sUsername 和 sPassword 分别传递用户名和口令。
lService 用来指示使用的服务类型,如HTTP, FTP等。通常传递值为1,表示FTP服务。
如果将x8000000传递到 lFlags 参数,连接将使用被动FTP语义。或者,在我们的例子中,传递0来使用非被动语义。
最后,当使用回叫信号时,lContext 用来识别应用程序的前后关系。因为在我们的例子中不使用回叫信号,所以这个值为0。
现在使用匿名的电子邮件用户名与主机FTP.MICROSOFT.COM 相连接:
lngINetConn = InternetConnect(lngINet, ftp.microsoft.com, 0, _
揳anonymous,ally@wallyworld.com, 1, 0, 0)
如果函数调用失败,则lngINetConn 为0。反之,lngINetConn 就保存在下一步中将传递给FtpGetFile 的句柄的值。
3、现在我们已经实现了连接,然后就需要调用FtpGetFile 。这个函数完成从一个FTP服务器上读取文件并在本地存储时有关的所有管理功能。VB特定调用这一函数的声明是:
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ copyright think58
[版权所有:http://think58.com]
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _
ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean think58好,好think58
第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。
lpszRemoteFile和lpszNewFile 分别是FTP服务器上的文件名和将在本地机上创建的文件名。
fFailIfExists 标志是0(替换本地文件)或1 (如果本地文件已经存在则取消)。
dwFlagsAndAttributes 用来指定本地文件的文件属性。在我们的例子中忽略,只传递0。
dwFlags 参数指定为1是用ASCII 传输文件(A类传输方法),指定为2是用二进制传输文件(1类传输方法)。由于DIRMAP.TXT 是ASCII 文本文件,我们传递值1。
最后,当使用回叫信号时,lContext 用来识别应用程序前后关系。因为在我们的例子中不使用回叫信号,所以这个值为0。
所以,以下是得到DIRMAP.TXT文件并将其存在 C:DIRMAP.TXT的调用。如果本地文件已经存在,就覆盖它。
blnRC = FtpGetFile(lngINetConn, dirmap.txt,c:dirmap.txt, 0, 0, 1, 0)
如果函数调用成功,blnRC为 True, 反之为False。
4、现在文件已经被接收,使用InternetCloseHandle 调用来关闭连接和session 句柄。VB特定调用这一函数的声明是:
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer. think58.com [资料来源:www.THINK58.com]
如同指明的一样,此函数只有一个参数hInet,是要关闭或抛弃的句柄的值。因为InternetConnection 和InternetOpen 中有句柄,就需要调用这个关闭函数两次。另外因为InternetConnection 句柄是由InternetOpen 句柄决定的,关闭他们时的顺序与创建时相反。 以下是调用函数:
InternetCloseHandle lngINetConn InternetCloseHandle lngINet
接下来 在FTP中,Put、Rename、 Delete是怎样的?这些函数也相当简单。首先来看看Put 函数。
基本步骤是:
1、调用InternetOpen函数设置环境。
2、调用InternetConnect 函数连接主机。
本文来自think58
7.3 上传下载文件模块
程序首先判断是否选择了下载文件,及保存路径。如果这些事都做了,程序将可以得到路径,通过解析这个路径,可以得到文件名,通过rcd szDirRemote,这句代码,设置服务器当前的路径。然后通过API函数FtpGetFile下载文件。
代码如下:
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 bActiveSession Then
If nodX Is Nothing Then
MsgBox "Please select the item to GET!"
Exit Sub
End If
szTempString = TreeView1.SelectedItem.Text 本文来自think58 [资料来源:http://think58.com]
szFileRemote = szTempString
nPos = 0
nTemp = 0
Do
nTemp = InStr(1, szTempString, "/", vbBinaryCompare)
If nTemp = 0 Then Exit Do
szTempString = Right(szTempString, Len(szTempString) - nTemp)
nPos = nTemp + nPos
Loop
szDirRemote = Left(szFileRemote, nPos)
szFileRemote = Right(szFileRemote, Len(szFileRemote) - nPos)
szFileLocal = File1.Path
rcd szDirRemote [版权所有:http://think58.com]
bRet = FtpGetFile(hConnection, szFileRemote, szFileLocal & "/" & szFileRemote, False, _
INTERNET_FLAG_RELOAD, dwType, 0)
File1.Refresh
If bRet = False Then ErrorOut Err.LastDllError, "FtpGetFile"
Else
MsgBox "Not in session"
End If
End Sub
图4:下载成功后的界面
7.4 添加删除文件夹模块
这个功能实现代码和上个模块相似,基本信息得到后,能过解析路径名,并设置服务器当前路径,然后通过API函数实现。在删除文件夹操作时,程序必须先判断用户选择的是否是文件夹,通过节点图标来判断。
代码如下:
Private Sub NewDirectory_Click()
Dim bRet As Boolean
Dim newname As String
newname = DirectoryName.Text [资料来源:http://think58.com]
Dim szFileRemote As String, szDirRemote As String, szFileLocal As String
Dim szTempString As String
Dim nPos As Long, nTemp As Long
Dim nodX, nodY As Node
Set nodX = TreeView1.SelectedItem
If bActiveSession Then
If newname = "" Then
MsgBox "please input the name of the new directory"
本文来自think58 [来源:http://think58.com]
[资料来源:http://THINK58.com]
在本次毕业设计中,我不仅学习了新的知识,而且加强了动手能力,把掌握的理论知识,运用到实践过程中。在夯实了专业课知识的同时,掌握了开发软件的一般流程,熟悉了系统开发的基本环节。在刚开始做设计时,由于对ASP.NET不是很了解,感觉没有头绪,无从下手。但通过认真学习了系统开发的相关知识以及参考相关书籍后,对自己的题目做了全面的分析,渐渐有了开发思路,设计的方案逐步清悉。作者认为整个过程中最重要的是系统框架的设计,需要详细、科学的规划,周密的思考,大的框架出来后各个模块、功能就可以有秩序的开发,否则,设计是杂乱无章的,在开发过程中如果认为初期的框架不合适,需要修改,那么前面的工作就需要全面变动,导致了系统开发的低效率。其次数据库的设计也非常重要,要考虑数据库的完整性约束,否则在使用过程中会出现数据的丢失、冗余等错误,同时不能完整的、准确的提供系统用户所需要的信息。最后在界面设计方面也要尽量做到简洁、一目了然,保证可操作性,能够使用户快速的适应系统的使用。在代码设计过程中,通过参考其他ASP.NET系统的代码,慢慢的有点眉目,不懂的时候,向班里其他同学询问请教,到网上查找资料,经过一翻努力后,终于完成了这次毕业设计。
但由于编程经验不足,以及对工具软件技术方面的局限,本系统还不够完善,问题主要体现在以下三个方面:
copyright think58
[版权所有:http://think58.com]
1、系统的稳定性存在不足:在性能测试过程中,系统当遭遇误操作和错误数据的时候,一些不完善的功能模块,会出现系统出错,自动结束等问题。这些问题在使用当中,会存在很多弊端,例如:误操作,结束系统后,相应数据未保存,则需要重新输入。若造成数据丢失,则会对数据的一致性有影响。
2、系统的安全性存在不足:Access数据库管理系统的安全性不及SQL数据库管理系统。但是,作为一个小型的合同管理系统,本身对安全性的要求并不是很高,所以仍然是使用Access数据库。另外,并没有对系统的数据进行加密,对数据的安全性有一定的影响。
3、系统的扩展性存在不足:由于时间仓促等原因,系统的功能不是很完善,如售后服务等功能还未能实现。
对于本系统存在的问题和不足,考虑的解决方案主要有以下对应的三个方面:
1、系统稳定性解决方案:主要是对程序的进一步优化和调试。用更好的设计思想进行比较论证,并对相关的代码进行比较优化,使系统的稳定性更强大。
2、系统安全性解决方案:可以使用密码来对数据进行限制来提高安全性,并结合数据库权限管理来解决这一问题。
3、系统扩展性解决方案:在今后的使用中继续完善系统功能,并根据需求的变化不断改进。
通过上述的改进,相信本系统在安全性和稳定性方面都会有较大的提升。不过,本系统还有很多零散的问题,比如把界面做的更加细致,更加全面合理等。在后续的制作和修改中,作者将慢慢对其进行完善。在这次毕业设计中,我学到了不少知识,同时也锻炼了自己的实践经验,这对于今后的工作学习是很有帮助的。 think58
[来源:http://www.think58.com]
致谢
在完成毕业设计期间,不仅提升了作者的理论知识,也提高实际操作能力,最重要的是能够以平稳的心态面对困难与挑战。这都是因为有真挚的老师、真诚的朋友予于帮助,在此表以真诚的谢意。
首先感谢****大学给作者提供了深造的机会,大学四年间,在各位老师的悉心指导下,使作者学到了很多知识及独立学习、解决问题的本领。
其次感谢作者指导老师计算机科学与技术学院的****老师,自开题任务书下达至完成此设计,在学习、工作、思想上给予的莫大帮助、鼓励、指导。其深厚的学术造诣、严谨的治学态度和对工作的那份责任感是作者学习的榜样。
最后感谢关心和帮助过作者的所有老师与同学。并向参与此次答辩的老师致以谢意。
think58.com [资料来源:http://www.THINK58.com]