26 people following this project (follow)

Project Description
Free, open source and easy to use .NET 2.0+ / Mono 2.x Component for connecting to FTP servers. Explicit and implicit SSL and TLS connections, data compression, directory parser, passive and active mode, transfer events, asynchronous method calls, proxy, and data streams.


* Use with .NET Framework 2.0, 3.0, 3.5, and 4.0 and Mono 2.x without recompiling.
* 100% CLR compliant C# managed code using .NET sockets - no third party code or dependencies.
* Execute commands in the background using fire and forget async command equivalents (OpenAsync(), PutFileAsync(), GetFileAsync(), etc).
* Transfer data both active and passive mode.
* Control which active ports to use better firewall support.
* Speed up data tranfers with built-in support for data compression (compress algorithm).
* Secure data transfers with FTPS (SSL 2.0, SSL 3.0, and TLS 1.0 explicit and implicit)
* Verify file upload and download file integrity with built-in support for CRC-32, SHA1, and MD5 hash checking to automatically compare files on server with XCRC, XSHA1, and XMD5 commands.
* Transfer files server-to-server using FXP.
* Retrieve file directory information as a standard DataSet object or an object collection for ease of use. Data bind the results directly to a data aware object.
* Extract symbolic link and permission information from UNIX directory listing formats.
* Easily log transfer events.
* Easily test to see if a file exists on the server with the method Exists().
* Retrieve recursive directory listing of files on the FTP server using the method GetDirListDeep().
* Upload and download files using any .NET stream object.
* Easily restart FTP transfer. Component will automatically figure out the restart byte position for you.
* Throttle data transfers with MaxUploadSpeed and MaxDownloadSpeed properties to prevent bandwidth staturation.
* Connect through HTTP and SOCKS v4, 4a, and 5 proxy servers.
* Parse UNIX and DOS directory listing formats. Parse UNIX file attributes and symbolic links.
* Create your own pluggable directory parser with your own code for archaic FTP directory listings by implementing the IFtpItemParser interface.
* Filter directory and file listings using wildcards and regular expressions.
* Monitor file transfer progress using events.
* Easily move files on the FTP server using the Move() method. This feature is especially useful when archiving data on the server after processing or downloading files.
* Transfer your files in binary or ASCII mode.
* Automatically adjusts date and time to the correct time zone of local machine.
* Supports SIZE FTP server command to retrieve the size of the file.
* Implements RFC 959 and RFC 1579.

   // create a new FtpClient object with the host and port number to use
   // (optionally create a secure SSL connection) 
   FtpClient ftp = new FtpClient("ftp.host.com", 21); 
  
   // specify a binary, passive connection with no zlib file compression 
   ftp.FileTransferType = TransferType.Binary;
   ftp.DataTransferMode = TransferMode.Passive; 

   // open a connection to the ftp server 
   ftp.Open("username", "password"); 

   // change to the 'files' directory on the ftp server 
   ftp.ChangeDirectory("files");

   // retrieve a listing of the files in the directory 'files'
   // as a collection of FtpItem objects
   FtpItemCollection col = ftp.GetDirList();

   // retrieve a file to disk
   // (optionally we could store it to any System.Stream object)
   ftp.GetFile("file.txt", @"c:\temp\file.text", FileAction.Create);

   // close connection to the ftp server 
   ftp.Close();




Last edited Mar 28 2010 at 5:28 PM by bentonstark, version 2