Article ID: 812404 - View products that this article applies to.
For a Microsoft Visual C# .NET version of this article, see 812409
This article refers to the following Microsoft .NET Framework Class Library namespaces:
This step-by-step article describes how to write pluggable protocol by using classes from the System.Net namespace.
The Microsoft .NET Framework provides a layered, extensible, and managed implementation of Internet services that can be integrated quickly and easily into your applications. The internet application that uses the request-response model can request data from the Internet by using multiple protocols.
The .NET Framework uses specific classes to provide the three pieces of information that are required to access Internet resources through a request-response model: the URI class, the WebResponse class, and the WebRequest class.
This article describes how to use System.Net to write a pluggable protocol to support FTP in managed classes. Pluggable protocols can communicate in both synchronous and asynchronous modes. However, this article discusses only synchronous FTP communication.
The following file is available for download from the Microsoft Download Center:
Download the VbFtpClient.exe package now.
Collapse this imageExpand this image
For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.
(http://support.microsoft.com/kb/119591/ )How to Obtain Microsoft Support Files from Online Services
Note This sample will not work with CERN proxies. For additional information about CERN proxies, click the following article number to view the article in the Microsoft Knowledge Base:
(http://support.microsoft.com/kb/166961/ )How To FTP with CERN-Based Proxy Using WinInet API
In the earlier example of vbFtpClient, the FtpWebResponse class inherits from the WebResponse class. You have to override the ContentType and GetResponseStream methods. The ContentType property provides special information that the client requires to identify the type of content that is delivered by the server. The GetResponseStream method returns a data stream from the internet resource.
In the earlier example, the FtpStream class is used to handle the data stream that is delivered to the server together with the request, as shown in the following sample code:
Similarly, by using WebRequest you can manage the details of a request to an Internet resource. This sample code uses the FtpWebRequest class that inherits from the WebRequest class. The WebRequest.Create method creates an FTP WebRequest instance based on the URI class that is passed. The instance that is returned is a typecast to the FtpWebRequest class to access protocol-specific properties. Typically, the WebRequest instance provides all the necessary information to formulate a request.
The following sample code demonstrates the methods that are implemented or overridden in the FtpWebRequest class. For more information and implementation, visit the Download Center for the VbFtpClient.exe file that is mentioned earlier in this article.
The following sample code demonstrates how to use IWebRequestCreate:
The following sample code demonstrates how the RegisterPrefix method is used and how to create a WebRequest instance:
The WebRequest.RegisterPrefix method registers the class and notifies the descendants to use the FTP protocol for retrieving the data. After registration, descendants of WebRequest are created by using the WebRequest.Create method with an argument passed as URI. The WebRequest instance exposes properties, such as GetResponse, that control the request to the server and access to the data stream that is sent to the server. The GetResponse method of the WebRequest instance sends the request from the client application to the server that is identified in the URI.
The GetResponse method returns a WebResponse instance. The WebResponse provides access to the data that is returned by the server in the form of a stream returned by the GetResponseStream method. This stream can be used and modified in an application. You can derive a class from the stream class and override the method, based on application requirements.
For more information, visit the Download Center for the vbFtpClient.exe file that is mentioned earlier in this article.
For more information, see the Microsoft .NET Framework SDK documentation, or visit the following MSDN Web site:
Programming Pluggable Protocols
The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.