使用c#从ftp服务器的多线程块中下载单个文件

问题描述 投票:0回答:2

我只是想使用c#从ftp服务器的多线程多个段中下载单个文件。如何从ftp服务器中分段下载文件?是否可以像httpwebrequest中那样为文件指定范围?

c# multithreading ftp segment resume-download
2个回答
1
投票

首先是免责声明:多任务处理是神奇的“更快”子弹。如果将其应用于错误的问题,最终将导致代码比普通的单任务/顺序方法更复杂/更容易出错,对内存的要求更高,并且实际上slower。通常,一项长期运行的替代任务是强制性的。但是大规模并行化仅在非常特殊的情况下。常规文件操作受磁盘或网络限制。多任务处理不会对磁盘​​或网络绑定的操作增加任何加速。确实可能会导致速度降低,因为NCQ和类似功能必须理顺您的随机访问请求。用Netowrking所说的

有时

可以有所帮助。 Some服务器确实应用了“每个连接”限制,因此可以通过下载来将下载分成具有自己连接的多个段,从而可以加快网络速度。但是可以肯定的是,这里确实如此。考虑Speed Rant的第1点之外的所有内容。假设FTPWebRequest仍然是您正在使用的类,看起来ContentLenghtContentOffset可能是您正在寻找的机器人。您基本上使用它类似于子字符串-每个连接/子请求都从Y偏移量中提取X个字节。


0
投票
您可以使用FtpWebRequest.ContentOffset。但是FtpWebRequest.ContentOffset未实现。要解决此问题,一旦收到所需的字节数,您必须中止下载。
© www.soinside.com 2019 - 2024. All rights reserved.