请如何使用WININET(api)或Internet Transfer(控件)

ijianbo 架构师  2003-07-10 11:35:25
如何用他们上传文件?
...全文
14 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ijianbo 2003-07-15
没人可以帮助我么?
回复
ijianbo 2003-07-10
这个资料我有
我是想用http 协议做?如何实现呢?
回复
lxqlogo0 2003-07-10

用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服务器的地址簿等,这里不做更深一步讨论。




回复
ijianbo 2003-07-10
没人知道嚒?
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告