1

我需要在 C# 中实现文件下载器。此下载器将在客户端计算机上运行,​​并将根据多个条件下载多个文件。

我的主要限制是客户端在下载过程中可能会离线(有时不止一次),所以我需要发生以下事情:

1)下载者应该注意到没有任何网络通信了,并暂停下载。

2) 通讯恢复后,下载器应继续下载,并继续收集包,将它们添加到已经下载到本地磁盘的包中。

我检查了 StackOverflow 以前的帖子,发现有两个选项 - WebClient 和 WebRequest(使用继承类之一)。我想知道是否有人可以根据我指定的要求建议使用哪一个。如何检测通信中断?

4

2 回答 2

0

您将需要System.Net.HttpWebRequest来发送 HTTP 请求和System.IO.FileStream来访问文件。需要的两个方法是HttpWebRequest.AddRangeFilestream.seek

HttpWebRequest.AddRange 方法为请求添加一个字节范围标头,范围参数指定范围的起点。服务器将从指定的范围参数开始发送数据到 HTTP 实体中数据的末尾。而 Filestream.seek 方法用于访问流中的当前位置。

来源和例子

于 2013-05-14T01:56:18.463 回答
0

您需要下载简历(如果您从中下载的服务器支持),这意味着您应该使用,WebRequest因为WebClient您不能这样做(可能下一个版本将支持 RANGE 请求)。

一旦断开连接,正在读取网络流的代码就会引发异常。这告诉您下载有问题(即网络问题),然后您可以尝试在某些时期建立新连接,如果成功,则从最后一个成功字节恢复(使用 HTTP HEADER 中的 RANGE)。

于 2013-05-14T02:07:19.243 回答