如何实现文件下载检测通信中断

本文关键字:文件下载 检测 通信 中断 实现 何实现 | 更新日期: 2023-09-27 18:13:28

我需要在c#中实现一个文件下载器。这个下载程序将在客户端计算机上运行,并将根据几个条件下载几个文件。

我的主要限制是客户端可能会在下载期间脱机(有时不止一次),所以我需要发生以下事情:

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

2)一旦通信恢复,Downloader应该恢复下载,并继续收集软件包,将它们添加到已经下载到本地磁盘的软件包中。

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

如何实现文件下载检测通信中断

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

HttpWebRequest。AddRange方法向请求添加一个字节范围标头,range参数指定该范围的起始点。服务器将从指定的范围参数开始发送数据,直到HTTP实体中的数据结束。而文件流。Seek方法用于访问流中的当前位置。

来源和示例

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

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