C# 3.0 需要关于改进C中ftp上载性能的建议吗#

C# 3.0 需要关于改进C中ftp上载性能的建议吗#,c#-3.0,ftp,C# 3.0,Ftp,我正在编写一个软件,通过ftp和远程服务器上传和下载大量文件。下载速度很好,在4mb/s以上保持一致。小上传是即时的。我遇到的问题是,当我的程序上载一个大的40Mb zip文件时,我的性能非常差。它似乎以突发方式(100-200Kb/s)上传文件,然后延迟一秒钟,并重复这样做,直到文件最终完成上传。以编程方式从同一台服务器下载文件最多需要30秒,使用filezilla将同一文件上载到同一台服务器大约需要相同的时间。通过软件上传可能需要15分钟。显然出了问题 我正在使用starksoft ftp库

我正在编写一个软件,通过ftp和远程服务器上传和下载大量文件。下载速度很好,在4mb/s以上保持一致。小上传是即时的。我遇到的问题是,当我的程序上载一个大的40Mb zip文件时,我的性能非常差。它似乎以突发方式(100-200Kb/s)上传文件,然后延迟一秒钟,并重复这样做,直到文件最终完成上传。以编程方式从同一台服务器下载文件最多需要30秒,使用filezilla将同一文件上载到同一台服务器大约需要相同的时间。通过软件上传可能需要15分钟。显然出了问题

我正在使用starksoft ftp库处理此处的上载/下载:

下面是问题代码的一个示例:

    FtpClient ftp = new FtpClient(sourcecfg.Host);
        ftp.MaxUploadSpeed = 0;
        ftp.MaxDownloadSpeed = 0;
        ftp.FileTransferType = TransferType.Binary;
        ftp.DataTransferMode = TransferMode.Passive;
        ftp.Open(sourcecfg.FtpUserName, sourcecfg.FtpPassword); 
        ftp.PutFile(backupTempPath, targetcfg.getFullPath() + "wordpress-backup.zip",  FileAction.Create);                
我还尝试使用一个重载版本的PutFile,它采用流对象而不是路径字符串。结果没有变化

附带说明:我在一个virtualbox实例中用winxp在visual c#express 2008中编译。我尝试了调试和生产exe,结果没有变化


这些问题感觉像是缓冲或节流问题,但在查看ftp类的内部代码时,我没有发现任何异常,我特别将其设置为不节流。对这个特定的ftp组件库有什么建议或意见吗

了解使用FileZilla的连接是主动模式连接还是被动模式连接可能很有趣。其他有趣的事情是尝试使用FTP客户端下载文件,该客户端显示客户端和服务器之间的对话框。我不确定FileZilla是否会向您显示此信息。

您准备好并行处理多个文件了吗?更新:我用这个文件交换了ftp库,我遇到了完全相同的问题。我一次只能在非异步线程中上载/下载1个文件。更新:我甚至尝试使用FtpWebRequest手动上载,类似于下面的示例:。我得到了同样的结果。不管我使用的缓冲区大小如何,它都是影响传输的非常低级别的东西。非常沮丧,也非常停滞不前。