Starksoft Biko consolidated library alpha release is now available for download. The older, standalone Starksoft FTPS library is still available. More soon...
* 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
// change to the 'files' directory on the ftp server
// 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