利用VB实现FTP基本功能
更新时间:2023-11-17 08:22:01 阅读量: 教育文库 文档下载
- 怎么用vb实现自动输入推荐度:
- 相关推荐
课程设计任务书
题 目: FTP文件传输的实现 初始条件:
理论:学完“操作系统”和“计算机网络”课程,掌握一种高级程序设计语言(C++、
C#、Java、Delphi)及集成开发平台的使用。
实践:计算机学院科学系实验中心提供计算机、软件平台和网络环境。如果自己
有计算机可以在其上进行设计。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1) 模仿应用FTP协议。
(2)主要功能: 1支持站点目录和文件结构浏览。
2支持断线自动重新连接并自动恢复传输。
3文件列表过滤,远程编辑,整个远端目录删除,目录上传下载。
(3)应用所学计算机网络课程中的知识,利用网络实用程序实现其协议。
(4)编制好网络实用程序后,设计若干用例,上机测试并分析所设计的程序。 (5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:
设计题目;需求说明(要求、功能简述)或问题描述; 设计说明(简要的分析与概要设计);详细的算法描述; 源程序与执行结果(含测试方法和测试结果);使用说明; 设计心得(设计的特点、不足、收获与体会); 展望(该实用程序进一步改进扩展的设想)。
时间安排:
设计时间一周: 周1:查阅相关资料。
周2:系统分析,设计。 周3周4:编程并上机调试 周5:撰写课程设计报告。
设计验收安排:19周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:19周的星期五下午5:00之前。
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
武汉理工大学《计算机网络》课程设计说明书
FTP文件传输的实现
1设计题目
FTP文件传输的实现
2需求说明(要求、功能简述)或问题描述
2.1 FTP概念和传输原理
FTP是Internet上使用非常广泛的一种通讯协议。它是由支持Internet文件传输的各种规则所组成的集合,这些规则使 Internet用户可以把文件从一个主机拷贝到另一个主机上,因而为用户提供了极大的方便和收益。
FTP和其它Internet服务一样,也是采用客户机/服务器方式。使用方法很简单,启动FTP客户端程序先与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。FTP有一个根本的限制,那就是,如果用户未被某一FTP主机授权,就不能访问该主机,实际上是用户不能远程登录(Remote Login)进入该主机。也就是说,如果用户在某个主机上没有注册获得授权,没有用户名和口令,就不能与该主机进行文件的传输。而Anonymous FTP则取消了这种限制。
FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive (也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTPServer。Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式:文本模式(ASCII)和二进制模式(BIN/IMAGE)。
1
武汉理工大学《计算机网络》课程设计说明书
简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为下载文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为上载文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
FTP(非匿名)必须要有4要素:FTP主机地址,端口号,用户名,密码。
2.2 需求说明
完成两台计算机之间的拷贝,实现文件的上传和下载; 支持站点目录和文件结构浏览;
文件列表过滤,远程编辑,整个远端目录删除; 支持断线自动重新连接并自动恢复传输。
3设计说明(简要的分析与概要设计)
采用VB编程,通过建立一系列的窗体模块,程序模块,类模块编制一个小的应用软件。该软件的功能是当程序运行成功后,用户可以选择任意的FTP主机地址进行登陆。当选择是匿名的FTP主机地址时,选择anonymous复选框,这时只需要输入FTP主机地址就可以登陆,此时用户名为anonymous,密码为Emai1地址,以便更好地对用户访问进行跟综。如果不是匿名登陆,则取消选择anonymous复选框,这时要输入用户名和密码,一个用户名对应了一个访问的权限。
通过WINSOCK建立连接,将信息发送到远程的ftp服务器主机上,实现用户的登陆。 当用户成功登陆后,远程FTP主机的文件就全部列在frmMain窗体左侧的TreeView控件中,当点机TreeView控件中的文件夹时,相应的文件夹中的文件就列在右侧的ListView控件中,并且显示文件的图标,大小和最近的访问日期。显示的方式可以通过点击工具栏中的图标来设置,文件可以以大图标的形式显示,也可以以小图标的形式显示。
当用户选择了远程的某一个文件后,可以点击工具栏上的下载,删除,重命名图标来实现对远程文件的操作。但实际上大多数FTP主机为了安全采取了一些保护措施以保护自己的文件。除非你有特殊的权限,否则不能对文件进行修改和删除。但是大多数匿名FTP主机都允许用户从其下载文件。
用户也可以在本地选择文件上传到FTP服务器主机,大多数用户不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用
2
武汉理工大学《计算机网络》课程设计说明书
户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。因此要实现文件的上传,还需选择一个特殊的可以用户上传文件的FTP服务器主机地址。
4详细的算法描述
开 始 用户选择文件传输模式 用户选择与FTP服务器连接 Y 匿名FTP服务器? 输入用户名和密码 N 输入FTP服务器地址 点击连接,与FTP服务器连接 N 连接成功? Y 根据错误代码进行调试 进行文件的上传,下载,修改,重命名等操作 N 操作成功? Y N 退 出? Y 断 开 连 接
3
出 错 处 理 武汉理工大学《计算机网络》课程设计说明书
5 源程序与执行结果(含测试方法和测试结果)
5.1原程序部分
5.1.1 frmMain 窗体的部分代码
Const NAME_COLUMN = 0 Const TYPE_COLUMN = 1 Const SIZE_COLUMN = 2 Const DATE_COLUMN = 3
Private Declare Function LockWindowUpdate Lib \(ByVal hwndLock As Long) As Long
Dim mbMoving As Boolean '定义是否鼠标按下 Const sglSplitLimit = 500 '定义最小的分割距离 Private m_LastNode As Node
Private WithEvents m_FtpConnection As CFtpConnection Private m_strFile As String Private m_lFileSize As Long Private Sub Check1_Click() If Check1.Value Then
m_FtpConnection.PassiveMode = True Else
m_FtpConnection.PassiveMode = False End If End Sub
Private Sub CoolBar1_HeightChanged(ByVal NewHeight As Single) SizeControls picSplitter.Left End Sub
Private Sub Form_Load()
Me.Left = GetSetting(App.Title, \是当前程序的标题 Me.Top = GetSetting(App.Title, \\1000) '表示读取注册表中关于App.Title所指的应用程序中Settings注册表目录下的MainTop变量的值,如果没有找到这
4
武汉理工大学《计算机网络》课程设计说明书
个注册表变量则,默认为1000
Me.Width = GetSetting(App.Title, \ Me.Height = GetSetting(App.Title, \ Set m_FtpConnection = New CFtpConnection m_FtpConnection.Timeout = 180 End Sub
Private Sub Form_Unload(Cancel As Integer) Dim i As Integer
Set m_FtpConnection = Nothing 'close all sub forms For i = Forms.Count - 1 To 1 Step -1 '卸载所有窗体 Unload Forms(i) Next
SaveSetting App.Title, \End Sub
Private Sub m_FtpConnection_StateChanged(State As FTP_CONNECTION_STATES) Dim strStatus As String Select Case State
Case FTP_CONNECTION_RESOLVING_HOST strStatus = \
Case FTP_CONNECTION_HOST_RESOLVED strStatus = \
Case FTP_CONNECTION_CONNECTED strStatus = \
Case FTP_CONNECTION_AUTHENTICATION strStatus = \ Case FTP_USER_LOGGED
strStatus = \ Case FTP_ESTABLISHING_DATA_CONNECTION strStatus = \
5
武汉理工大学《计算机网络》课程设计说明书
Case FTP_DATA_CONNECTION_ESTABLISHED strStatus = \ Case FTP_RETRIEVING_DIRECTORY_INFO strStatus = \ Case FTP_DIRECTORY_INFO_COMPLETED strStatus = \ Case State = FTP_TRANSFER_STARTING strStatus = \ Case FTP_TRANSFER_COMLETED strStatus = \ ProgressBar1.Value = 0.01 m_lFileSize = 0 End Select
sbStatusBar.Panels(1).Text = strStatus End Sub
Private Sub imgSplitter_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
With imgSplitter 'imgSplitter为image(图片)控件 picSplitter.Move .Left, .Top, .Width \\ 2, .Height - 20 End With
picSplitter.Visible = True mbMoving = True
LockWindowUpdate Me.hwnd '指将句柄为Handle的窗体锁定,不能更新。 End Sub
Private Sub m_FtpConnection_UploadProgress(lBytes As Long) On Error Resume Next
sbStatusBar.Panels(1).Text = \ ProgressBar1.Value = lBytes / (m_lFileSize / 100) End Sub
6
武汉理工大学《计算机网络》课程设计说明书
Private Sub mnuConnect_Click() Call EstablishConnection End Sub
Private Sub mnuDelete_Click() Dim intRetVal As Integer Dim strFileName As String On Error GoTo ERROR_HANDLER
strFileName = tvTreeView.SelectedItem.Key & lvListView.SelectedItem.Text
intRetVal = MsgBox(\you really want to delete file \& strFileName & \vbYesNoCancel, \ If intRetVal = vbYes Then
If m_FtpConnection.DeleteFile(strFileName) Then
ListFiles tvTreeView.SelectedItem '返回最近选中的项目 Else
MsgBox \ \
m_FtpConnection.GetLastServerResponse, , _ \ End If End If Exit Sub ERROR_HANDLER: If Err = 91 Then
MsgBox \ Else
MsgBox \ vbInformation, \ End If End Sub
7
武汉理工大学《计算机网络》课程设计说明书
Private Sub mnuDownload_Click() Call DownloadFile End Sub
Private Sub mnuFile_Click() With m_FtpConnection
mnuDownload.Enabled = Not .Busy mnuUpload.Enabled = Not .Busy End With End Sub
Private Sub mnuHelp_Click()
mnuHelpAbout.Enabled = Not m_FtpConnection.Busy End Sub
Private Sub mnuListViewMode_Click(Index As Integer) Select Case Index '当鼠标点击工具栏的view菜单时
Case 0 lvListView.View = lvwIcon '显示大图标的情况 Case 1 lvListView.View = lvwSmallIcon '显示小图标的情况 Case 2 lvListView.View = lvwList '只显示列表
Case 3 lvListView.View = lvwReport '显示文件大小和日期 End Select
tbToolBar.Buttons(15 + Index).Value = tbrPressed End Sub
Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button) 'ByRef是VB默认的参数传递方式,如果指定传递的是参数的值要使用关键字ByVal Dim strTemp As String On Error Resume Next Select Case Button.Key Case \
Call EstablishConnection Case \
8
武汉理工大学《计算机网络》课程设计说明书
Set tvTreeView.SelectedItem = tvTreeView.SelectedItem.Parent strTemp = tvTreeView.SelectedItem.FullPath
strTemp = Mid$(strTemp, InStr(1, strTemp, \返回某一字符串从另一字符串的右侧开始算起第一次出现的位置
If m_FtpConnection.SetCurrentDirectory(strTemp) Then ListFiles tvTreeView.SelectedItem End If Case \
If Not m_FtpConnection.CloseConnection Then If
m_FtpConnection.FtpGetLastError
=
ERROR_FTP_USER_TRANSFER_IN_PROGRESS Then Dim intRetVal As Integer
intRetVal = MsgBox(\the data transfer?\ If intRetVal = vbYes Then
m_FtpConnection.CancelTransfer End If End If End If Case \
Call RefreshDirectory Case \ mnuDownload_Click Case \ mnuUpload_Click Case \ mnuCreateDir_Click Case \ mnuDelete_Click
9
武汉理工大学《计算机网络》课程设计说明书
5.2.2 用户点击file->connect to 或工具栏上的连接后的界面(见图二)
(匿名方式)
(非匿名)(图二)
5.2.3用户与ftp服务器主机地址ftp://vip:vip88@202.118.167.160 连接成功的界面(见图三)
(图三)
15
武汉理工大学《计算机网络》课程设计说明书
分析: 220 Serv-U FTP Server v6.1 for WinSock ready .. 表示服务就绪 ;
USER vip表示用户名字为vip; 331 User name okay, need password...表示用户名正确,需要口令;
PASS vip88表示用户的密码为vip88;
230 User logged in, proceed. 表示用户已经注册完毕; 257 \表示路径已建立; PORT 192,168,18,128,4,76 表示当前客户端的IP为192.168.18.128 ,端口号为4*256+76=1100; 200 PORT Command successful. 表示命令执行正常结束; 150 Opening ASCII mode data connection for /bin/ls 表示文件状态正确,正在打开数据连接; 226 Transfer complete表示正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止); 在左侧列的是远程服务器提供给用户共享的文件夹,右侧列的是文件夹所包含的文件,并列出文件的图标,大小和最近更改日期。
5.2.4用户从ftp主机上下载文件,保存到本地的subject文件夹中(见图四)
(图四)
16
武汉理工大学《计算机网络》课程设计说明书
5.2.5文件下载成功:(见图五)
(图五)
6 使用说明
6.1 界面使用说明
(图六)
如图六,从左到右的功能依次为建立连接,返回上一级 ,停止文件传输,刷新,下载,上传,create new directory,删除文件,重命名,显示大图标,显示小图标,显示列表,显示详细信息。 同时用户也可以在文件菜单中执行相关的操作。
6.2 代码的对应含义说明
120服务在NNN时间内可用;
125数据连接已经打开,开始传送数据; 150文件状态正确,正在打开数据连接; 200命令执行正常结束;
202命令未被执行,此站点不支持此命令; 211系统状态或系统帮助信息回应; 212目录状态信息;
214关于如何使用本服务器或特殊的非标准命令。此回复只对人有用; 220 新连接的用户的服务已就绪;
225数据连接已打开,没有进行中的数据传送;
17
武汉理工大学《计算机网络》课程设计说明书
226正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止); 227进入被动模式
331用户名存在,需要输入密码;
350对被请求文件的操作需要进一步更多的信息; 421 太多用户,那就过会再连 ;
426连接关闭,传送中止。 你的防火墙限制你FTP的传输,请关闭你个人电脑上的防火墙; 550请求操作未被执行,文件不可用;
553 请求操作未被执行。 文件名不允许;
7设计心得(设计的特点、不足、收获与体会)
7.1设计的特点
7.1.1 本次课程设计不仅可以实现匿名ftp服务器的访问,还可以实现非匿名ftp服务器
的访问。只要在连接界面取消选择anonymous复选框就可以实现非匿名ftp服务器的访问。
7.1.2 本次课程设计可以实现远程站点的目录和文件结构的浏览。如果是非匿名的ftp
服务,用户还可以申请属于自己的ftp并实现文件的删除,重命名和上传操作。
7.1.3 本次课程设计是建立在tcp协议的基础上的,tcp是可靠的面向连接的协议,因此
当用户的操作无法实现时,会提示用户出错,以便用户及时的采取措施保证文件传输的正确。
7.2设计的不足
本次的课程设计的不足之处是不能够实现断线的自动重连和多站点同时下载。它在出现错误的时候会提示用户出错,例如超时,此时用户得到了错误提示后再进行重新连接或处理。只能对一个ftp主机地址进行文件传输,要实现多站点的同时下载是一个很复杂的过程。
7.3 收获与体会
本次的课程设计让我透彻的了解了ftp协议的工作原理,ftp文件传输的模式和ftp文件传输的两种工作方式。学会了VB中winsock的使用,并能够通过高级语言编程实现客户端与ftp服务器主机相连接并实现文件的传输。巩固VB程序语言的应用,这次课程设计中有很多的函数在以前的编程中都没有遇到过,这次的课程设计起到了一个查漏补缺的作用,例如系统函数InStrRev(,,)的意思是返回某一字符串从另一字符串的右侧开始算起第一次出现的位置,这是我通过在网络上查询知道的。
18
武汉理工大学《计算机网络》课程设计说明书
这次的课程设计使我了解到一个好的程序是要用大量的时间和不断的思考换来的,恒心和细心是一个程序员必须具备的基本要素。同时还要积极的和别人交流,这样才能弥补自身的不足。
总之,这次的课程设计使我感到了网络的功能是如此强大并且在不断地日益完善,我们平时只使用了网络的很小的一部分功能。例如:我们经常接触http协议,在上网搜集资料的时候只考虑到了以http://开头的网址,其实它只是网络资源里很小的一部分,很多的大学,科学院所,机关部门等都对外免费开放了自己的ftp资源,用户可以通过访问共享这些资源。匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。 因此ftp对我们的吸引是巨大的。
这次课程设计激发了我对计算机网络这一门课程的兴趣,使我获益良多。
8展望(该实用程序进一步改进扩展的设想)
本次的课程设计只能实现单个FTP服务器地址的下载,如果在程序中设置多个发送进程使信息发送到不同的ftp主机地址,那么就可以实现多文件的下载。
同样该程序如果设置了计时器,当在规定的时间内没有实现ftp主机与用户的连接那么就可以自动调用连接进程重新连接,这样就实现了断线自动重新连接并自动恢复传输的功能。
19
正在阅读:
利用VB实现FTP基本功能11-17
2014电大《道路勘测设计》期末复习题05-17
公共关系的概念和涵义 - 图文05-02
2016中国金融公司100强排名09-22
动火管理制度10-13
12年上学期 计算机与网络安全 期末试卷 A 答案10-03
金蝶K3 - 10.4O数据字典01-19
关于加快乡镇工业园区建设的意见09-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 利用
- 实现
- 基本
- 功能
- FTP
- 浦城非物质文化遗产
- 高速公路高位顶推施工技术
- 智慧银行网点建设规划实施方案word
- 2016公共卫生—防病类 - 答案(1)
- 自由基聚合测试题答案
- 某地煤矿煤XX沟矿区露天精查(最终)地质报告
- 医院各部门操作流程图
- 中国无线门户 - 图文
- 高二精选题库 语文考点检测1北师大版
- 国考行测判断推理备考攻略:腹有逻辑气自华
- 公共娱乐场所灭火和应急疏散预案范本
- 新高一化学课后检测:3.2.1《自然界中氮的循环,氮的氧化物》(鲁教版必修1)(含解析)
- KKS编码规则
- 医用X射线诊断放射防护要求
- 济南版 七年级生物上 第二单元 第三章
- 互联网背景下企业自营物流模式分析
- 2019年12月英语四级听力答案(文字完整版)
- 2014水利质检员试题
- IG-541混合气体灭火系统设计理论和基本计算方法 - 图文
- 课外练习一