Private Sub Command1_Click()
Winsock1.Connect "主机地址", 80
End SubPrivate Sub Winsock1_Connect()
  Winsock1.SendData "Get 这里为下载文件的地址 HTTP/1.0" & vbCrLf & "Accept *.* " & vbCrLf & vbCrLf
  open "要保存的文件路径" for output as #1
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
dim databyte()
redim databyte(bytestotal)
static first as boolean '这里设置判断是否是第一次接收数据
if not first then
   first=true
   Winsock1.GetData str, vbString  '这里面包含了下载文件的大小等信息,你可以自己分析一下,以便在接收完成以后断开连接
else  '开始接收文件
   winsock1.getdata databyte,vbbyte
   print #1,databyte
   if 接收完成 then
      close #1
      winsock1.close
   end if
end if
End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
msgbox "下载文件错误"
close #1
Winsock1.Close
End Sub我没有进行调试,你可以自己先看看,我原来写过这方面的东西,但找不到源代码了

解决方案 »

  1.   

    用inet控件,太方便了
     
    OpenURL 方法
          打开并返回指定 URL 的文档。文档以变体型返回。该方法完成时,URL 的各种属性(以及该 URL 的一些部分,如协议)将被更新,以符合当前的 URL。语法object.OpenUrl url [,datatype]OpenURL 属性的语法包含下面部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    url 必需的。被检索文档的 URL。 
    datatype 可选的。整数,如“设置值”所示,指定数据类型。 
    设置值datatype 的设置值:常数 值 描述 
    icString 0 缺省值。把数据作为字符串来检索。 
    icByteArray 1 把数据作为字节数组来检索。 
    返回类型Variant说明OpenURL 方法的返回值取决于 URL 的目标。例如,如果 URL 的目标是某个 FTP 服务器的目录,将返回该目录。另一方面,如果目标是一个文件,则检索该文件。OpenURL 方法等效于:调用带 GET 操作的 Execute 方法,然后在 StateChanged 事件中调用 GetChunk 方法。但是,OpenURL 方法会导致从站点返回同步数据流。如下所示,如果正在检索一个二进制文件,在把它写到磁盘上之前,请务必使用一个字节数组作为临时变量:Dim b() As Byte
    Dim strURL As String
    '设置 strURL 为一个有效的地址。
    strURL = "FTP://ftp.GreatSite.com/China.exe"
    b() = Inet1.OpenURL(strURL, icByteArray)Open "C:\Temp\China.exe" For Binary Access _
    Write As #1
    Put #1, , b()
    Close #1注意   当使用 OpenURL 方法时,在设置 Password 和 UserName 属性之前,设置 URL 属性。如果最后设置 URL 属性, UserName 和 Password 属性将被置为 ""。