利用VB实现FTP基本功能Word格式.docx

上传人:b****1 文档编号:3888924 上传时间:2023-05-02 格式:DOCX 页数:19 大小:41.95KB
下载 相关 举报
利用VB实现FTP基本功能Word格式.docx_第1页
第1页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第2页
第2页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第3页
第3页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第4页
第4页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第5页
第5页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第6页
第6页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第7页
第7页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第8页
第8页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第9页
第9页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第10页
第10页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第11页
第11页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第12页
第12页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第13页
第13页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第14页
第14页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第15页
第15页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第16页
第16页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第17页
第17页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第18页
第18页 / 共19页
利用VB实现FTP基本功能Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

利用VB实现FTP基本功能Word格式.docx

《利用VB实现FTP基本功能Word格式.docx》由会员分享,可在线阅读,更多相关《利用VB实现FTP基本功能Word格式.docx(19页珍藏版)》请在冰点文库上搜索。

利用VB实现FTP基本功能Word格式.docx

撰写课程设计报告。

设计验收安排:

19周星期五8:

00起到计算机学院科学系实验中心进行上机验收。

设计报告书收取时间:

19周的星期五下午5:

00之前。

指导教师签名:

年月日

系主任(或责任教师)签名:

FTP文件传输的实现

1设计题目

2需求说明(要求、功能简述)或问题描述

FTP概念和传输原理

FTP是Internet上使用非常广泛的一种通讯协议。

它是由支持Internet文件传输的

各种规则所组成的集合,这些规则使Internet用户可以把文件从一个主机拷贝到另一个主机上,因而为用户提供了极大的方便和收益。

FTP和其它Internet服务一样,也是采用客户机/服务器方式。

使用方法很简单,启动FTP客户端程序先与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。

FTP有一个根本的限制,那就是,如果用户未被某一FTP主机授权,就不能访问该主机,实际上是用户不能远程登录(RemoteLogin)

进入该主机。

也就是说,如果用户在某个主机上没有注册获得授权,没有用户名和口令,就不能与该主机进行文件的传输。

而AnonymousFTP则取消了这种限制。

FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive(也就是PASV被动方式)。

Standard模式FTP的客户端发送PORT命令至UFTP服务器。

Passive模式FTP的客户端发送PASV命令到FTPServer。

Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。

PORT命令包含了客户端用什么端口接收数据。

在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。

FTPserver必须和客户端建立一个新的连接用来传送数据。

Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。

FTP服务器收至Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口

上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。

FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式:

文本模式(ASCII)和二进制模式(BIN/IMAGE)。

简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为下载文件。

若将文件从自己计算机中拷贝至远程计算机上,则称之为上载文件。

在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。

FTP(非匿名)必须要有4要素:

FTP主机地址,端口号,用户名,密码。

2.2需求说明

完成两台计算机之间的拷贝,实现文件的上传和下载;

支持站点目录和文件结构浏览;

文件列表过滤,远程编辑,整个远端目录删除;

支持断线自动重新连接并自动恢复传输。

3设计说明(简要的分析与概要设计)

采用VB编程,通过建立一系列的窗体模块,程序模块,类模块编制一个小的应用软件。

该软件的功能是当程序运行成功后,用户可以选择任意的FTP主机地址进行登陆。

选择是匿名的FTP主机地址时,选择anonymous复选框,这时只需要输入FTP主机地址就可以登陆,此时用户名为anonymous密码为Email地址,以便更好地对用户访问进行跟综。

如果不是匿名登陆,则取消选择anonymous复选框,这时要输入用户名和密码,一个用户名对应了一个访问的权限。

通过WINSOC建立连接,将信息发送到远程的ftp服务器主机上,实现用户的登陆。

当用户成功登陆后,远程FTP主机的文件就全部列在frmMain窗体左侧的TreeView控件中,当点机TreeView控件中的文件夹时,相应的文件夹中的文件就列在右侧的ListView控件中,并且显示文件的图标,大小和最近的访问日期。

显示的方式可以通过点击工具栏中的图标来设置,文件可以以大图标的形式显示,也可以以小图标的形式显示。

当用户选择了远程的某一个文件后,可以点击工具栏上的下载,删除,重命名图标来实现对远程文件的操作。

但实际上大多数FTP主机为了安全采取了一些保护措施以保护自己的文件。

除非你有特殊的权限,否则不能对文件进行修改和删除。

但是大多数匿名FTP主机都允许用户从其下载文件。

用户也可以在本地选择文件上传到FTP服务器主机,大多数用户不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。

即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。

随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。

因此要实现文件的上传,还需选择一个特殊的可以用户上传文件的FTP服务器主机地址。

4详细的算法描述

开始

5.1.1frmMain窗体的部分代码

ConstNAME_COLUMN=0

ConstTYPE_COLUMN=1

ConstSIZE_COLUMN=2

ConstDATE_COLUMN=3

PrivateDeclareFunctionLockWindowUpdateLib"

user32"

(ByValhwndLockAsLong)AsLong

DimmbMovingAsBoolean'

定义是否鼠标按下

ConstsglSplitLimit=500'

定义最小的分割距离

Privatem_LastNodeAsNode

PrivateWithEventsm_FtpConnectionAsCFtpConnection

Privatem_strFileAsString

Privatem_lFileSizeAsLong

PrivateSubCheck1_Click()

IfThen

=True

Else

=False

EndIf

EndSub

PrivateSubCoolBar1_HeightChanged(ByValNewHeightAsSingle)

SizeControls

PrivateSubForm_Load()

=GetSetting,"

Settings"

"

MainLeft"

1000)'

是当前程序的标题

MainTop"

表示读取注册表中关于所指的应

用程序中Settings注册表目录下的MainTop变量的值,如果没有找到这个注册表变量则,默认为1000

MainWidth"

6500)

MainHeight"

Setm_FtpConnection=NewCFtpConnection

=180

PrivateSubForm_Unload(CancelAsInteger)

DimiAsInteger

Setm_FtpConnection=Nothing'

closeallsubforms

Fori=-1To1Step-1'

卸载所有窗体

UnloadForms(i)

Next

SaveSetting,"

ViewMode"

PrivateSubm_FtpConnection_StateChanged(StateAsFTP_CONNECTION_STATES)DimstrStatusAsString

SelectCaseState

CaseFTP_CONNECTION_RESOLVING_HOSTstrStatus="

Resolvinghost..."

CaseFTP_CONNECTION_HOST_RESOLVEDstrStatus="

Hostresolved"

CaseFTP_CONNECTION_CONNECTEDstrStatus="

Connected"

CaseFTP_CONNECTION_AUTHENTICATIONstrStatus="

Authentication..."

CaseFTP_USER_LOGGED

strStatus="

Youareloggedin.Connectionready."

CaseFTP_ESTABLISHING_DATA_CONNECTIONstrStatus="

Establishingdataconnection..."

CaseFTP_DATA_CONNECTION_ESTABLISHEDstrStatus="

Dataconnectionestablished."

CaseFTP_RETRIEVING_DIRECTORY_INFOstrStatus="

Retrievingdirectoryinfo..."

CaseFTP_DIRECTORY_INFO_COMPLETEDstrStatus="

Directorylistingcompleted."

CaseState=FTP_TRANSFER_STARTINGstrStatus="

Transferinprogress..."

CaseFTP_TRANSFER_COMLETED

Transfercompleted."

m_lFileSize=0

EndSelect

(1).Text=strStatus

XAsSingle,

PrivateSubimgSplitter_MouseDown(ButtonAsInteger,ShiftAsInteger,YAsSingle)

WithimgSplitter'

imgSplitter为image(图片)控件

.Left,.Top,.Width\2,.Height-20

EndWith

=TruembMoving=TrueLockWindowUpdate'

指将句柄为Handle的窗体锁定,不能更新。

PrivateSubm_FtpConnection_UploadProgress(lBytesAsLong)

OnErrorResumeNext

(1).Text="

Uploading"

&

m_strFile&

"

("

lBytes&

bytes)"

=lBytes/(m_lFileSize/100)

PrivateSubmnuConnect_Click()

CallEstablishConnection

PrivateSubmnuDelete_Click()

DimintRetValAsInteger

DimstrFileNameAsString

OnErrorGoToERROR_HANDLER

strFileName=&

intRetVal=MsgBox("

Doyoureallywanttodeletefile

"

strFileName&

?

vbYesNoCancel,"

Deletefile"

IfintRetVal=vbYesThen

If(strFileName)Then

ListFiles'

返回最近选中的项目

MsgBox"

Can'

tdeletefile."

vbCrLf&

_

Serverresponse:

,,—

tdeletefile"

ExitSub

ERROR_HANDLER:

IfErr=91Then

Selectfiletorename,please."

vbInformation,"

RenameFile"

Else

Erroroccured!

#"

:

_vbInformation,"

PrivateSubmnuDownload_Click()

CallDownloadFile

PrivateSubmnuFile_Click()

Withm_FtpConnection

=Not.Busy

PrivateSubmnuHelp_Click()

=Not

PrivateSubmnuListViewMode_Click(IndexAsInteger)

SelectCaseIndex'

当鼠标点击工具栏的view菜单时

Case0

=lvwIcon'

显示大图标的情况

Case1

=lvwSmallIcon'

显示小图标的情况

Case2

=lvwList'

只显示列表

Case3

=lvwReport'

显示文件大小和日期

(15+Index).Value=tbrPressed

PrivateSubtbToolBar_ButtonClick(ByValButtonAs'

ByRef是VB默认的参数传递方

式,如果指定传递的是参数的值要使用关键字ByVal

DimstrTempAsString

SelectCase

Case"

Connect"

UpLevel"

Set=strTemp=strTemp=Mid$(strTemp,

InStr(1,strTemp,"

/"

))'

InStrRev返回某一字符串从另一字符串的右侧开始算起第一

次出现的位置

If(strTemp)ThenListFiles

Stop"

IfNotThen

If=ERROR_FTP_USER_TRANSFER_IN_PROGRESSThenDimintRetValAsIntegerintRetVal=MsgBox("

Datatransferinprogress.Doyouwanttocancelthedatatransfer?

vbYesNo+vbQuestion)

Refresh"

CallRefreshDirectory

Download"

mnuDownload_Click

Upload"

mnuUpload_Click

CreateDirectory"

mnuCreateDir_Click

Delete"

mnuDelete_Click

Rename"

mnuRename_Click

ViewLargeIcons"

=lvwIcon

ViewSmallIcons"

=lvwSmallIcon

ViewList"

=lvwList

ViewDetails"

=lvwReport

PrivateSubmnuFileClose_Click()

'

unloadtheform

UnloadMe

PublicFunctionFormatFileSize(lFileSizeAsLong)AsString

IflFileSize>

=1024Then

FormatFileSize=Format$(CStr(lFileSize/1024),"

#########KB"

)'

CStr转换为String类型

FormatFileSize=CStr(lFileSize)&

bytes"

ExitFunctionERROR_HANDLER:

&

EndFunction

PrivateSubtvTreeView_DragDrop(SourceAsControl,xAsSingle,yAsSingle)'

source只正在被拖动的控件,x,y指鼠标指针在目标对象中的坐标值

IfSource=imgSplitterThen

SizeControlsx

PrivateSubAddFileToListView(oFtpFileAsCFtpFile)

DimintIconAsInteger

DimstrFileNameAsStringstrFileName=intIcon=GetImageNumber(strFileName)

SetlvItem=strFileName,strFileName,intIcon,intIcon)

(1)=

(2)=

PrivateSubRefreshDirectory()

With'

从treeview中移除所有subfolders

If.Children>

0ThenFori=1To.Children

(.

Nexti

ListFiles

PrivateSubEstablishConnection()

DimtvNodeAsNode

的内容

DimfAsNewfrmConnectvbModal'

显示连接窗体的内容

If=comdOKThen'

当按下OK时,清空treeview和listviewWithm_FtpConnection

.FtpServer=

.UserName=

.Password=.PassiveMode=CBool'

callConnectmethodIf.ConnectThen

Label1=

addrootnodetothetreeview

SettvNode=,,.CurrentDirectory,1)

=.CurrentDirectory

Set=tvNodeListFilestvNode,True

EndIf'

.Connect

EndWith'

m_FtpConnection

=comdOK

5.2.2frmconnect窗体的部分代码

PublicPropertyGetUserName()AsString

UserName=mvarUserName

EndProperty

PublicPropertyGetPassword()AsString

Password=mvarPassword

PublicPropertyGetURL()AsString

URL=mvarURL

PrivateSubchkAnonym_Click()

txtUserName="

anonymous"

Illi

txtPassword="

="

YourE-MailAddress"

ElsetxtUserName="

一n*n

Password"

PrivateSubcmdCancel_Click()mvarAction=comdCancel

PrivateSubcmdOK_Click()

IfLen(txtURL)=0Then

EnteraURLorclickonCancelbutton."

vbOKOnly+vbInformation,"

InvalidURL"

ElsemvarURL=LCase

IfLen=0Then

mvarUserName=vbNullString

ElsemvarUserName=

mvarPassword=vbNullString

ElsemvarPassword=

mva

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2