Archived Forum PostQuestion:
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.