使用Winsock还是Internet Transfer,最好可以给出基本的实现源码。谢谢!!

解决方案 »

  1.   

    呵呵,我以前也问过,后来解决了看看下面这个贴子有答案的
    http://expert.csdn.net/Expert/topic/1511/1511718.xml?temp=.3516962
      

  2.   

    FTP程序设计
      前面提到Internet Transfer control可以提供FTP protocol,这里我们便要告诉您如何运用 Internet Transfer control来设计一个可以连接FTP Server的client程序,并将FTP Server上的bbb.txt文件download到local端。Step 1:程序设计
      在File选项中选择NewProject建立一个新的工程,在屏幕上看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时要选Standard.EXE。接着在Project下,选择Property属性选项,在general选项下将Project Name改为FTP client。
      屏幕的Form上加入一个Internet Transfer control,取名为Inet1。将Inet1 property的参数设置如下:
    Accesstype=2-icnamedproxy
    Username="david"
    password="2333334"
    protocol=2-icFTP
    proxy=172.18.16.65:8080  我们在此将Username及password设置好,当我们Login进入FTP Server时,Server将会直接跳过输入Username和password的屏幕。加入一个TextBox control,取名为FTPgetfile。加入两个Button control,取名为FTPget和FTPLink,分别将其Caption改为FTPget和 FTPLink。  在FTPLink _Click()中加入以下程序代码:
    Private Sub FTPLink _Click()
    Inet1.excute "FTP 128.9.200.4"
    End Sub
     Execute是Internet Transfer control提供的一个用来执行FTP公用程序的method,我们可以在它的后面加入FTP的命令,这样我们就可以使用任何熟悉的FTP公用程序来完成工作。
      笔者的FTP Server地址是128.9.200.4,所以我们在FTP命令后面填入这个地址。  接着在FTPget _Click()中加入以下程序代码:
    Private Sub FTPLink _Click()
    Inet1.excute "GET aaa.txt c:\bbb.txt"
    End Sub
      这个动作是将FTP Server上的aaa.txt文件传送到client端。Step 2:测试
      将FTPclient执行起来,按下FTPLink Button,连结到 FTP Server。按下FTPget Button,取回文件。有没有发觉到在C:\目录下面多了一个bbb.txt的文件?恭喜您成功了!
      

  3.   


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