Question:
Hi!
I recently upgraded my FTP component from version 9.2 to version 9.5 (the latest). My problem is, that the upload speed (plain FTP) is now up to 90% lower. With the old version, I got e.g. 32 MByte/sec, now I get 8 MByte/sec - and my users complain about an even larger decrease in speed.
I tried the new parameter SoSndBuf, but the value reported by LastErrorText keeps the same at 8192...
Here is my LastErrorText output:
ChilkatLog: Connect_Ftp2: DllDate: Apr 19 2014 ChilkatVersion: 9.5.0.33 UnlockPrefix: XXX Username: XXX Architecture: Little Endian; 32-bit Language: .NET 4.5 VerboseLogging: 0 ProgressMonitoring: enabled: yes heartbeatMs: 0 sendBufferSize: 524288 --ProgressMonitoring ImplicitSsl: 0 AuthTls: 0 AuthSsl: 0 Hostname: lt520 Port: 21 IdleTimeoutMs: 60000 ConnectTimeout: 15 socketOptions: SO_SNDBUF: 8192 SO_RCVBUF: 8192 TCP_NODELAY: 1 --socketOptions readCommandResponse: replyLineQP: 220-FileZilla Server version 0.9.43 beta replyLineQP: 220-written by Tim Kosse (tim.kosse@filezilla-project.org) replyLineQP: 220 Please visit http://sourceforge.net/projects/filezilla/ commandResponse: 220-FileZilla Server version 0.9.43 beta 220-written by Tim Kosse (tim.kosse@filezilla-project.org) 220 Please visit http://sourceforge.net/projects/filezilla/ statusCode: 220 --readCommandResponse initialStatus: 220 initialResponse: 220-FileZilla Server version 0.9.43 beta 220-written by Tim Kosse (tim.kosse@filezilla-project.org) 220 Please visit http://sourceforge.net/projects/filezilla/ Logging in... Login: sendCommand: sendingCommand: USER raincoat --sendCommand readCommandResponse: replyLineQP: 331 Password required for raincoat commandResponse: 331 Password required for raincoat statusCode: 331 --readCommandResponse sendCommand: sendingCommand: PASS * --sendCommand readCommandResponse: replyLineQP: 230 Logged on commandResponse: 230 Logged on statusCode: 230 --readCommandResponse FTP authentication successful. setTransferMode: sendCommand: sendingCommand: TYPE I --sendCommand readCommandResponse: replyLineQP: 200 Type set to I commandResponse: 200 Type set to I statusCode: 200 --readCommandResponse --setTransferMode --Login Login successful. syst: sendCommand: sendingCommand: SYST --sendCommand readCommandResponse: replyLineQP: 215 UNIX emulated by FileZilla commandResponse: 215 UNIX emulated by FileZilla statusCode: 215 --readCommandResponse --syst Syst: UNIX emulated by FileZilla sendCommand: sendingCommand: FEAT --sendCommand readCommandResponse: replyLineQP: 211-Features: replyLineQP: MDTM replyLineQP: REST STREAM replyLineQP: SIZE replyLineQP: MLST type*;size*;modify*; replyLineQP: MLSD replyLineQP: UTF8 replyLineQP: CLNT replyLineQP: MFMT replyLineQP: 211 End commandResponse: 211-Features: MDTM REST STREAM SIZE MLST type*;size*;modify*; MLSD UTF8 CLNT MFMT 211 End statusCode: 211 --readCommandResponse Success. --Connect_Ftp2 --ChilkatLog
The SoSndBuf property applies to data connections, not to the control connection. The Connect method establishes the control connection for sending FTP commands. When a command to upload or download a file is sent, then a temporary data connection is established and this is the connection where the SoSndBuf socket option is set.
Make sure to set it to a large value, such as 1MB. If you examine the LastErrorText after the method call to upload/download a file, you should see the SoSndBuf value that is used.