Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Download WinInet可以不重新开始就恢复文件下载吗?_Download_Wininet_Resume Download - Fatal编程技术网

Download WinInet可以不重新开始就恢复文件下载吗?

Download WinInet可以不重新开始就恢复文件下载吗?,download,wininet,resume-download,Download,Wininet,Resume Download,我使用了InternetSetFilePointer和InternetReadFile的组合来支持可恢复下载。因此,当我开始下载一个文件时,我会检查我们是否已经有了它的一部分,然后调用InternetSetFilePointer,使用我们现有的大小,然后我开始阅读。这很有效。。。然而,我的观察结果如下: 如果我已经下载了90%的文件,并且下载需要2分钟,那么当我继续时,第一次调用InternetReadFile大约需要2分钟!我只能得出结论,在幕后,它只是从一开始就下载文件,扔掉所有东西,直到我

我使用了
InternetSetFilePointer
InternetReadFile
的组合来支持可恢复下载。因此,当我开始下载一个文件时,我会检查我们是否已经有了它的一部分,然后调用
InternetSetFilePointer
,使用我们现有的大小,然后我开始阅读。这很有效。。。然而,我的观察结果如下:

如果我已经下载了90%的文件,并且下载需要2分钟,那么当我继续时,第一次调用
InternetReadFile
大约需要2分钟!我只能得出结论,在幕后,它只是从一开始就下载文件,扔掉所有东西,直到我给
InternetSetFilePointer
,然后返回“下一个”数据

因此,问题是:

1) WinInet是“模拟”
InternetSetFilePointer
,还是真的将该信息提供给服务器

2) 假设HTTP服务器支持,有没有办法让WinInet真正跳到所需的搜索点


我下载的服务器是Amazon S3服务器,我确信它99.9%支持resume。

在一些扩展搜索中终于找到了正确的方法,这里有一个链接,指向一篇关于它的好文章:

基本上,要执行正确的HTTP恢复,您需要使用“Range”HTTP头,以便服务器可以正确分配请求的资源