当前位置:编程学习 > VB >>

用Internet Transfer编写FTP程序

 

  常上网的人都对FTP熟悉得不能再熟悉了,它是文件传输协议的英文缩写,所谓文件传输协议就是人们规定的在网络间传输文件的一组规定,里面规定了数据包的格式、数据包头部结构、命令结构等等。其实要想实现FTP的功能并不是很难,下面我们就来介绍一下如何作一个简单的Windows界面的FTP程序。

  其实我们常用的VC和VB等开发工具就可以轻松搞定,下面我们就来说说在VB中使用Microsoft Internet Transfer 控件实现FTP的功能。

  Internet Transfer控件,支持HTTP(超文本传输协议)和FTP(文件传输协议),超文本传输协议就是我们的浏览器传输网页时使用的协议,也就是说你也可以用它作一个浏览器。我们这里主要讨论文件传输协议FTP。

  首先创建一个新工程,在你的工具箱上添加Microsoft Internet Transfer 控件,并放到你的主窗体上,注意看它的属性:

  Protocol指所用的协议,我们这里选2-icFTP,就是FTP协议。

  UserName和Password是这样的:UserName和Password都给null或""时,发送到FTP Server的UserName是"anonymous",Password是用户的Email,当UserName给null或"",而Password为非空字符串时是错误的,其他情况正常。

  RemoteHost写FTP Server(就是你要连到的那台主机,你可以在程序中动态地给这个属性赋值,以适应连接到不同的主机上)的域名地

  址或IP,RemotePort在你指定FTP协议时自动被设置成21,URL属性由RemoteHost、RemotePort、Protocol等几个属性内容组合而成,如果前面已经给出这些值,VB会自动生成URL,以上这些属性均可以在程序中动态赋值,使你可以更灵活地运用这个控件。

  下面说说这个控件的方法(Method):

  1、OpenURL,调用该方易做图连通FTP Server属性中指定的主机,并返回它的Welcom Message,一般是一些欢迎词和当前有多少用户登录等信息。

  2、Execute方法用于执行对远程服务器的请求,它能发送对特定协议有效的请求,对于FTP协议来说,有效的操作有:

  CD file1

  改变目录。改变到 file1 中指定的目录。

  CDUP

  改变到父目录。等效于“CD...”

  CLOSE

  关闭当前的 FTP 连接。

  DELETE file1

  删除 file1 中指定的文件。

  DIR, LS file1

  搜索 file1 中指定的目录(允许用通配符,但要使用远程主机的语法)。如果没有指定 file1,将返回当前的整个工作目录。使用 GetChunk 方法返回目录数据。

  GET, RECV file1 file2

  检索 file1 中指定的远程文件,并创建 file2 中指定的新本地文件。

  MKDIR file1

  创建目录。创建 file1 中指定的目录。创建是否成功取决于用户在远程主机上的权限。

  PUT, SEND file1 file2

  复制 file1 指定的本地文件到 file2 指定的远程主机上。

  PWD

  打印工作目录。返回当前目录名。使用 GetChunk 方法返回数据。

  QUIT

  终止当前用户。

  RENAME file1 file2

  将 file1 中命名的远程文件重命名为 file2 中指定的新名称。成功与否取决于用户在远程主机上的权限。

  RMDIR file1

  删除目录。删除 file1 中指定的远程目录。成功与否取决于用户在远程主机上的权限。

  SIZE file1

  返回 file1 指定的目录的大小。

  举个例子:

  Inet1.Execute "","dir"

  debug.print Inet1.GetChunk 这一句将打印出上一句dir的结果。

  Inet1.Execute "","Get file1 C:File1" 这个命令会把对方c:File1的文件取到本机当前目录下(这里假设对方是windows base 的机器,并且有c:File1的文件)。

  下面说说该控件唯一的事件StateChanged。

  当这个FTP连接中状态发生了改变,如登录成功、命令接收成功、断线等等都会引发该事件。该事件的处理函数有一个参数state,表明当前连接状态,它的值定义如下:

  值 标识符 意义

   0 icNone 无状态可报告。

   1 icHostResolvingHost 该控件正在查询所指定的主机的 IP 地址。

   2 icHostResolved 该控件已成功地找到所指定的主机的 IP 地址。

   3 icConnecting 该控件正在与主机连接。

   4 icConnected 该控件已与主机连接成功。

   5 icRequesting 该控件正在向主机发送请求。

   6 icRequestSent 该控件发送请求已成功。

   7 icReceivingResponse 该控件正在接收主机的响应。

   8 icResponseReceived 该控件已成功地接收到主机的响应。

   9 icDisconnecting 该控件正在解除与主机的连接。

  10 icDisconnected 该控件已成功地与主机解除了连接。

  11 icError 与主机通讯时出现了错误。

  12 icResponseCompleted 该请求已经完成,并且所有数据均已接收到。

  用Select case 语句处理各个状态就行了。

  怎么样,是不是很简单呀,一个简单的FTP你只须建立连接,从用户读取命令,用Execute方法将命令传送到对方主机就可以了,剩下的活都有Inet控件帮你搞定,但是要作得好用,还要处理各种网络错误,用递归处理子目录上载或下载,为用户建立FTP服务器的地址簿等,这里不做更深一步讨论。

 

补充:软件开发 , Vb ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,