gpt4 book ai didi

c++ - 恢复中止的下载?

转载 作者:可可西里 更新时间:2023-11-01 09:39:47 24 4
gpt4 key购买 nike

我有几台 PC 在慢速 Internet 连接网络上运行 + 他们使用 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

...

这将是一般原则。您可以使用 cUrl、boost::asio、Windows 套接字等在 C++ 中实现它,...有许多不同的方法和许多很好的教程。

关于c++ - 恢复中止的下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10470246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com