恢复中止的下载
Resume aborted download?
我很少有PC在慢速互联网连接网络上运行+他们使用VPN,所以连接变得非常慢。我有自己的应用程序,必须通过HTTP从外部服务器下载更新,但如果更新大约几MB,则不会下载。所以我问的是如何实现下载方法,以便在连接中止时可以恢复下载。
我在Windows上编码,C++,如果我可以使用WinAPI实现这一点,那就太好了。
我认为Internet Explorer具有此功能,因此必须使用WININET实现。
HTTP 恢复
有点用词不当,因为连接通常在下载"暂停"时终止,然后在恢复时发出新请求。
然后,新请求包含范围规范,因此服务器仅发送整个请求文件的一部分。
通常,您会首先触发HEAD请求以获取整个文件大小。
请求
HEAD /big_file.zip HTTP/1.1
Host: www.example.com
响应
HTTP/1.0 200 OK
Accept-Ranges: bytes
Content-Length: 2000000
Content-Type: application/zip
然后,您可以发送这样的请求,仅下载 1,000,000 到 2,000,000 的字节(如果您的第一次下载在 1,000,000 字节处停止):
请求
GET /big_file.zip HTTP/1.1
Host: example.com
Range: bytes=1000000,2000000
响应
HTTP/1.0 206 Partial Content
Accept-Ranges: bytes
Content-Length: 1000000
Content-Range: bytes 1000000-2000000/2000000
Content-Type: image/jpeg
...
这将是一般原则。C++您可以使用cUrl,boost::asio
,Windows套接字,...有许多不同的方法和许多好的教程。
相关文章:
- 用C++将哈希表写入文件并从文件中恢复
- 下载URL中的所有文件
- Opencv 恢复到比我设置的更高的分辨率
- 变量在使用赋值语句赋值后恢复为以前的值
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 删除所有字符串后如何恢复 QStringList?
- VisualStudio:使用 Suse Enterprise Server 12 SP5 时,不会下载远程库标头
- 从 C++ 上的网址下载文件
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- libcurl :显示正在运行的上传和下载速率
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- "co_yield"是否可以在恢复协程时从调用方返回值?
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- OpenSSL C API:如何在程序exec()之后恢复TLS连接?
- 通过指针恢复对数组的引用.UB与否?
- 在libcurl中恢复损坏的https下载
- 恢复中止的下载
- 如何实现文件下载的暂停和恢复功能?
- 恢复能力为一个简单的下载管理器(C++-WinInet)
- 使用 Qt 和 QNetworkRequest 恢复失败的 HTTP 下载