Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/171379

From BetaArchive Wiki
Knowledge Base

Article ID: 171379

Article Last Modified on 7/13/2004


  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition

This article was previously published under Q171379


The Internet Transfer control allows you to go through a Proxy server to access information on an external FTP server. You can do this by specifying the AccessType and the name of the proxy server in the Internet Transfer Control.


  1. Set the AccessType property to icNamedProxy.
  2. An application can specify more than one proxy, including different proxies for the different protocols. For example, if you specify "ftp=ftp://ftp-gw gopher=http://jericho:99 proxy," FTP requests are made through the FTP proxy "ftp-gw" that listens at port 21 (default for FTP), and Gopher requests are made through a proxy called "jericho" that listens at port 99. All other requests (for example, HTTP requests) are made through the proxy called "proxy" that listens at port 80.

Sample Code

   Private Sub Command1_Click()
       Inet1.AccessType = icNamedProxy
      ' Using an CERN proxy server won't work here, you need to
      ' use a FTP proxy server when making FTP requests
      ' because CERN proxy servers don't accept FTP requests.
      ' Inet1.Proxy = "http://itgproxy:80"
       Inet1.Proxy = "ftp=ftp://ftp-gw"
      'FTP proxy server works here because it expects FTP requests
       Inet1.URL = ""
       Inet1.Execute , "DIR"
   End Sub

   Private Sub Command2_Click()
       Inet2.AccessType = icNamedProxy
     ' Using a FTP proxy server doesn't work because you are
     ' making an HTTP request to a FTP proxy server.
     'Inet2.Proxy = "ftp=ftp://ftp-gw"
       Inet2.Proxy = "http://proxy:80"
     'CERN proxy server works here because it expects HTTP requests.
       MsgBox Inet1.OpenURL("")
   End Sub

   Private Sub Command3_Click()
       Inet3.AccessType = icNamedProxy
     ' Or you could assign both the CERN proxy server
     ' and the FTP proxy server and the Internet Transfer
     ' Control will route it to the correct one
     Inet3.Proxy = "ftp=ftp://ftp-gw http=http://itgproxy:80"
     MsgBox Inet2.OpenURL("")
   End Sub

   Private Sub Inet1_StateChanged(ByVal State As Integer)
       Dim vtData As Variant ' Data variable.
       Select Case State
       ' ... Other cases not shown.
       Case icResponseCompleted ' 12
           ' Open a file to write to.
           Open "c:\temp\output.txt" For Binary Access _
           Write As #1

           ' Get the first chunk. NOTE: specify a Byte
           ' array (icByteArray) to retrieve a binary file.
           vtData = Inet1.GetChunk(1024, icString)

           Do While LenB(vtData) > 0
               Put #1, , vtData
               ' Get next chunk.
               vtData = Inet1.GetChunk(1024, icString)
           Put #1, , vtData
           Close #1
       End Select
   End Sub

What is CERN-Proxy?

The CERN-proxy protocol is widely recognized throughout the World Wide Web (WWW) community as the standard for implementing proxy services in TCP/IP- based networks. It has its origins within the standards for Hypertext Transfer Protocol (HTTP) as a UNIX-based service first developed by members of Switzerland's Conseil Europeen pour la Recherche Nucleair (European Laboratory for Particle Physics, or CERN) in the early 1990s.

As the CERN staff added application-aware proxy support for Hypertext Transfer Protocol daemon (HTTPd) servers (commonly known as Web servers) to their libraries, the WWW community built on these additions. In the time since it was first introduced, the CERN-proxy protocol has become an accepted industry standard for implementing HTTP proxy service. The Microsoft Proxy Server Web Proxy service is fully compatible with the CERN- proxy standard.

To better understand how CERN-proxy works, it is important to understand the differences between how most Internet applications work (such as File Transfer Protocol (FTP) and Gopher) and how HTTP applications work.

Standard TCP/IP applications such as FTP use TCP (or in some cases, User Datagram Protocol, or UDP) as the transport-level protocol for supporting client/server communications. For HTTP-based applications, a set of commands (called methods) are defined that are used in Web-based client/server communications. While CERN-compatible proxy services support WWW (HTTP), FTP, and Gopher requests, it is important to keep in mind that a CERN-based Web proxy server uses HTTP for all communications with its Web Proxy clients.

Important: If your proxy server is a CERN proxy server, you cannot make direct FTP connections by using the Execute method. In this case, to get a file, use the OpenURL method with the Open, Put, and Close statements. You can also use the OpenURL method to get a directory listing by invoking the method and specifying the target directory as the URL.

Additional query words: kbVBp500 kbActiveX kbCtrl kbInet kbDSupport kbdsi kbVBp600 kbVBp

Keywords: kbhowto KB171379