C# 如何实现文件下载程序来检测通信中断?
我需要在C#中实现一个文件下载程序。此下载程序将在客户端计算机上运行,并将根据多种条件下载多个文件 我的主要限制是,客户端可能会在下载过程中脱机(有时会不止一次),因此我需要发生以下情况: 1) Downloader应该注意到不再有任何网络通信,并暂停下载 2) 一旦通信恢复,Downloader应恢复下载,并继续收集软件包,将其添加到已下载到本地磁盘的软件包中C# 如何实现文件下载程序来检测通信中断?,c#,.net,download,C#,.net,Download,我需要在C#中实现一个文件下载程序。此下载程序将在客户端计算机上运行,并将根据多种条件下载多个文件 我的主要限制是,客户端可能会在下载过程中脱机(有时会不止一次),因此我需要发生以下情况: 1) Downloader应该注意到不再有任何网络通信,并暂停下载 2) 一旦通信恢复,Downloader应恢复下载,并继续收集软件包,将其添加到已下载到本地磁盘的软件包中 我查看了StackOverflow之前的文章,发现有两个选项–WebClient和WebRequest(使用一个继承类)。我想知道是否
我查看了StackOverflow之前的文章,发现有两个选项–WebClient和WebRequest(使用一个继承类)。我想知道是否有人可以根据我指定的要求建议使用哪一种。如何检测通信中断?您需要System.Net.HttpWebRequest发送HTTP请求,并System.IO.FileStream访问文件。需要两种方法:HttpWebRequest.AddRange和Filestream.seek HttpWebRequest.AddRange方法向请求添加一个字节范围标头,range参数指定范围的起点。服务器将开始从指定的范围参数向HTTP实体中的数据末尾发送数据。而Filestream.seek方法用于访问流中的当前位置 您需要下载简历(如果您正在下载的服务器支持),这意味着您应该使用
WebRequest
,因为使用WebClient
您无法做到这一点(可能下一个版本将支持范围请求)
一旦连接断开,正在读取网络流的代码就会抛出异常。这说明您的下载有问题(即网络问题),然后您可以在某些时段尝试创建新连接,如果成功,则从最后一个成功字节(使用HTTP头中的范围)恢复。刚刚完成,谢谢。谢谢。请注意,不建议在帖子中使用标题中的感谢信/签名/标签。这可能是正确的答案。。。但到目前为止,OP似乎想要“如何检测通信中断”的信息(假设其他问题已经知道)…好吧,他有两个问题,我回答了第一个问题“根据需求建议使用哪一个”