📄 81.htm
字号:
<p>用Internet Transfer编写FTP程序</p>
<p></p>
<p></p>
<p></p>
<p> 常上网的人都对FTP熟悉得不能再熟悉了,它是文件传输协议的英文缩写,所谓文件传输协议就是人们规定的在网络间传输文件的一组规定,里面规定了数据包的格式、数据包头部结构、命令结构等等。其实要想实现FTP的功能并不是很难,下面我们就来介绍一下如何作一个简单的Windows界面的FTP程序。</p>
<p> 其实我们常用的VC和VB等开发工具就可以轻松搞定,下面我们就来说说在VB中使用Microsoft Internet Transfer 控件实现FTP的功能。 </p>
<p> Internet Transfer控件,支持HTTP(超文本传输协议)和FTP(文件传输协议),超文本传输协议就是我们的浏览器传输网页时使用的协议,也就是说你也可以用它作一个浏览器。我们这里主要讨论文件传输协议FTP。</p>
<p> 首先创建一个新工程,在你的工具箱上添加Microsoft Internet Transfer 控件,并放到你的主窗体上,注意看它的属性:</p>
<p> Protocol指所用的协议,我们这里选2-icFTP,就是FTP协议。</p>
<p> UserName和Password是这样的:UserName和Password都给null或""时,发送到FTP Server的UserName是"anonymous",Password是用户的Email,当UserName给null或"",而Password为非空字符串时是错误的,其他情况正常。</p>
<p> RemoteHost写FTP Server(就是你要连到的那台主机,你可以在程序中动态地给这个属性赋值,以适应连接到不同的主机上)的域名地</p>
<p> 址或IP,RemotePort在你指定FTP协议时自动被设置成21,URL属性由RemoteHost、RemotePort、Protocol等几个属性内容组合而成,如果前面已经给出这些值,VB会自动生成URL,以上这些属性均可以在程序中动态赋值,使你可以更灵活地运用这个控件。</p>
<p> 下面说说这个控件的方法(Method):</p>
<p> 1、OpenURL,调用该方法会连通FTP Server属性中指定的主机,并返回它的Welcom Message,一般是一些欢迎词和当前有多少用户登录等信息。</p>
<p> 2、Execute方法用于执行对远程服务器的请求,它能发送对特定协议有效的请求,对于FTP协议来说,有效的操作有: </p>
<p> CD file1 </p>
<p> 改变目录。改变到 file1 中指定的目录。 </p>
<p> CDUP </p>
<p> 改变到父目录。等效于“CD...” </p>
<p> CLOSE </p>
<p> 关闭当前的 FTP 连接。 </p>
<p> DELETE file1 </p>
<p> 删除 file1 中指定的文件。 </p>
<p> DIR, LS file1 </p>
<p> 搜索 file1 中指定的目录(允许用通配符,但要使用远程主机的语法)。如果没有指定 file1,将返回当前的整个工作目录。使用 GetChunk 方法返回目录数据。 </p>
<p> GET, RECV file1 file2 </p>
<p> 检索 file1 中指定的远程文件,并创建 file2 中指定的新本地文件。 </p>
<p> MKDIR file1 </p>
<p> 创建目录。创建 file1 中指定的目录。创建是否成功取决于用户在远程主机上的权限。</p>
<p> PUT, SEND file1 file2 </p>
<p> 复制 file1 指定的本地文件到 file2 指定的远程主机上。 </p>
<p> PWD </p>
<p> 打印工作目录。返回当前目录名。使用 GetChunk 方法返回数据。 </p>
<p> QUIT </p>
<p> 终止当前用户。 </p>
<p> RENAME file1 file2 </p>
<p> 将 file1 中命名的远程文件重命名为 file2 中指定的新名称。成功与否取决于用户在远程主机上的权限。</p>
<p> RMDIR file1 </p>
<p> 删除目录。删除 file1 中指定的远程目录。成功与否取决于用户在远程主机上的权限。</p>
<p> SIZE file1</p>
<p> 返回 file1 指定的目录的大小。 </p>
<p> 举个例子: </p>
<p> Inet1.Execute "","dir" </p>
<p> debug.print Inet1.GetChunk 这一句将打印出上一句dir的结果。</p>
<p> Inet1.Execute "","Get file1 C:\File1" 这个命令会把对方c:\File1的文件取到本机当前目录下(这里假设对方是windows base 的机器,并且有c:\File1的文件)。</p>
<p> 下面说说该控件唯一的事件StateChanged。</p>
<p> 当这个FTP连接中状态发生了改变,如登录成功、命令接收成功、断线等等都会引发该事件。该事件的处理函数有一个参数state,表明当前连接状态,它的值定义如下: </p>
<p> 值 标识符 意义</p>
<p> 0 icNone 无状态可报告。 </p>
<p> 1 icHostResolvingHost 该控件正在查询所指定的主机的 IP 地址。 </p>
<p> 2 icHostResolved 该控件已成功地找到所指定的主机的 IP 地址。</p>
<p> 3 icConnecting 该控件正在与主机连接。 </p>
<p> 4 icConnected 该控件已与主机连接成功。 </p>
<p> 5 icRequesting 该控件正在向主机发送请求。 </p>
<p> 6 icRequestSent 该控件发送请求已成功。 </p>
<p> 7 icReceivingResponse 该控件正在接收主机的响应。</p>
<p> 8 icResponseReceived 该控件已成功地接收到主机的响应。</p>
<p> 9 icDisconnecting 该控件正在解除与主机的连接。 </p>
<p> 10 icDisconnected 该控件已成功地与主机解除了连接。</p>
<p> 11 icError 与主机通讯时出现了错误。 </p>
<p> 12 icResponseCompleted 该请求已经完成,并且所有数据均已接收到。 </p>
<p> 用Select case 语句处理各个状态就行了。 </p>
<p> 怎么样,是不是很简单呀,一个简单的FTP你只须建立连接,从用户读取命令,用Execute方法将命令传送到对方主机就可以了,剩下的活都有Inet控件帮你搞定,但是要作得好用,还要处理各种网络错误,用递归处理子目录上载或下载,为用户建立FTP服务器的地址簿等,这里不做更深一步讨论。</p>
<p></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -