首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SFTP SSH2下载速率(C#)

SFTP SSH2下载速率(C#)
EN

Stack Overflow用户
提问于 2011-07-09 07:17:28
回答 5查看 2.5K关注 0票数 1

我正在开发一个C#控制台应用程序,它下载文件从服务器与SSH密钥对身份验证。

我正在使用Chilkat API。

我尝试下载的文件非常大,在8 8GB到13 8GB之间。

目前,我可以使用我的应用程序获得的最大下载速度约为570 KB/s

如果我尝试使用FileZilla下载相同的文件,则下载速度为2.6MB/s

从同一网络上的同一台计算机运行。

有没有什么方法可以与控制台应用程序的FileZilla下载速度相匹敌?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-09 13:18:32

有几个因素会影响SFTP速度。SSH缓冲区大小、SFTP缓冲区大小、管道长度都在这些因素中(加密算法是另一个因素)。另一个因素是语言。优化的C++代码将始终比C#代码更快。因此,虽然您可以使用FileZilla实现类似的速度,但您不太可能与之匹敌。

另外,你有没有检查替代的SFTP组件(市场上有很多)?

票数 -1
EN

Stack Overflow用户

发布于 2011-07-09 08:04:27

您可能需要更大的TCP最大窗口大小:http://msdn.microsoft.com/en-us/library/ms819736.aspx

控制它的.NET函数是Socket.SetSocketOption(SocketOptionName.ReceiveBuffer)

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 01:56:14

我知道这很古老,但还没有人明确地回答这个问题。如果您有网络性能,Chilkat建议增加SoRcvBuf和SoSndBuf大小。我遇到了和你完全一样的问题,这解决了我的问题。

来自ChilKat documentation:

public int SoSndBuf {get;set;}

设置发送缓冲区大小套接字选项。通常,此属性应保持不变。默认值为0,表示不应显式设置发送缓冲区大小套接字选项(即应使用系统默认值,该值可能因系统而异)。

如果上载性能看起来很慢,可以更改此属性。建议为4096的倍数。若要查看当前系统的默认发送缓冲区大小,请在调用任何建立连接的方法后检查LastErrorText属性。它应该在"SO_SNDBUF“的标题下报告。要提高性能,请尝试将其设置为默认值的2、3或4倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6631522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档