我现在用的是ssh.net library进行SFTP操作与大型数据文件的工作数据的非阻塞流(> = 500MB)下载和使用返回SSH.Net
我有怎样的问题以非阻塞的方式返回数据。
ftpClient.DownloadFile()
方法签名是可以的,当写入文件或者如果有某种方式我可以实例化流,但是当我想要返回一个没有阻塞的流时如何使用它有问题。
到目前为止,我所看到的所有例子都将写入下载到Filestream
。没有任何东西只是返回流
使用.Net的内置FTP,您只需使用response.GetResponseStream()
,并且它可以无阻塞地回传数据。
在return语句中使用它的唯一方法是写入临时文件。但是这会导致它成为阻塞操作。
var tmpFilename = "temp.dat";
int bufferSize = 4096;
var sourceFile = "23-04-2015.dat";
using (var stream = System.IO.File.Create(tmpFilename , bufferSize, System.IO.FileOptions.DeleteOnClose))
{
sftpClient.DownloadFile(sourceFile, stream);
return stream;
}
我不希望它阻塞,但要流回数据。
我也想避免创建一个临时文件。
是否有其他的实现方式可以让数据流回传?
还是有一个替代流我可以实例化(MemoryStream
除外),这将适用于大型文件?
下载是在哪个协议(如:HTTP,TCP) ? –
我没有得到你的质疑。 TCP如何进来,因为它是一个非应用程序协议....不要以为通过HTTP的SFTP这样的东西....但它是通过端口22的SFTP。 – user919426
我以为你想先下载SFTP到您的应用程序(可能在WPF或ASP.NET中)。但下载是直接的,对吧? –