我正在写的软件,上传和下载大量的文件使用ftp与远程服务器。下载速度很好,在4mb/s以上保持稳定。小的上传是瞬间完成的。我遇到的问题是,当我的程序上传一个很大的40Mb的zip文件时,我的性能非常差。它似乎以突发(100-200Kb/s)的速度上传,然后延迟一秒钟,并重复执行此操作,直到文件最终完成上传。以编程方式从同一服务器下载文件最多需要30秒,使用filezilla将同一文件上传到同一服务器需要大约相同的时间。通过该软件上传可能需要长达15分钟。显然有些地方不对劲。
我正在使用starksoft ftp库来处理这里的上传/下载:http://starksoftftps.codeplex.com/
下面是一个有问题的代码示例:
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的重载版本,它接受流对象而不是路径字符串。结果是不变的。
附带内容:我正在用winxp在virtualbox实例中编译visual c# Express2008。我已经尝试了调试和生产可执行文件,结果没有任何变化。
这些问题看起来像是缓冲或节流问题,但在查看ftp类的内部代码时,我没有看到任何异常,我特别将其设置为不节流。对这个特定的ftp组件库有什么建议或评论吗?
发布于 2010-11-16 11:03:48
了解使用FileZilla的连接是主动模式连接还是被动模式连接可能很有趣。其他有趣的事情是尝试使用FTP客户端下载文件,该客户端显示客户端和服务器之间的对话框。我不确定FileZilla是否会向您显示此信息。
https://stackoverflow.com/questions/3489390
复制相似问题