More .NET libraries
- 
                                
                                    
                                
                                Rebex SFTP
                                .NET SFTP client
 - 
                                
                                    
                                
                                Rebex File Transfer Pack
                                FTP and SFTP together
 - 
                                
                                    
                                
                                Rebex Total Pack
                                All Rebex .NET libraries together
 
Back to feature list...
Transfer speed management
On this page:
Limiting transfer speed (bandwidth throttling)
High transfer speed is not always desirable - if you prefer high network throughput, you might wish to limit the transfer speed.
    To achieve this, use MaxDownloadSpeed and MaxUploadSpeed properties:
// set download and upload speed limits ftp.MaxDownloadSpeed = 4 * 1024; ftp.MaxUploadSpeed = 2 * 1024; // transfer files // ...
' set download and upload speed limits ftp.MaxDownloadSpeed = 4 * 1024 ftp.MaxUploadSpeed = 2 * 1024 ' transfer files ' ...
Speed monitoring (transfer speed event)
    To keep informed about the current speed of the transfer (in order to display it to the user, for example),
    register a TransferProgressChanged event handler. Current transfer speed is available through
    FtpTransferProgressChangedEventArgs.BytesPerSecond property,
    moving average calculation is used to smooth the value.
Sample event handler:
void client_SpeedMonitoring(object sender, FtpTransferProgressChangedEventArgs e)
{
    // display current speed info
    Console.WriteLine("Current speed: {0} B/s", e.BytesPerSecond);
}
Sub client_SpeedMonitoring(ByVal sender As Object, ByVal e As FtpTransferProgressChangedEventArgs)
    ' display current speed info
    Console.WriteLine("Current speed: {0} B/s", e.BytesPerSecond)
End Sub
Registering the event handler:
// register TransferProgressChanged event handler ftp.TransferProgressChanged += client_SpeedMonitoring; // transfer files // ...
' register TransferProgressChanged event handler AddHandler ftp.TransferProgressChanged, AddressOf client_SpeedMonitoring ' transfer files ' ...
TLS/SSL session caching
In FTP, each data transfer (such as upload, download or file and directory listing) uses a separate data channel. In TLS/SSL mode, this means that TLS/SSL encryption has to be negotiated for each data transfer. To improve speed significantly, Rebex FTP supports TLS/SSL session caching and resuming.
Ftp.Settings.SslReuseSessions to false.
Large buffer mode
    Occasionally, using larger buffers may increase the transfer speed, particularly for downloads.
    Set Ftp.Settings.UseLargeBuffers to true to use larger buffers.
Internal buffer sizes:
| Buffer | No option | UseLargeBuffers | 
|---|---|---|
| TCP socket's receive buffer | Socket's default | 4MB | 
| TCP socket's send buffer | Socket's default | 256KB | 
Back to feature list...