简单HTTP断点续传下载的疑问?了解的大神进来瞅瞅。
本帖最后由 a2619308 于 2012-11-25 12:21:27 编辑
最近发问题贴比较多。。。。 嘿嘿。
最近在研究使用wininet实现断点续传。搜了比较多的思路之后,打算先从最简单的尝试开始。思路是:
1、打开文件(如果文件不存在则创建),并读取文件大小。
2、将上面读到的文件的大小作为HTTP头Rang的起始数据获取点。如大小为100,则HTTP头为rang: bytes=99-\r\n
3、检查返回代码,如果是416则表示数据起始位置超出了(这里认为就是之前已经下载完成了)。
4、将读取到的数据写入到文件末尾。当读取数据大小为0时认为下载完成,否则继续。
问题来了:
我用这种方式试了3个文件,一个是mp3文件,一个券是字母的txt,一个全是中文的txt。
发现中文的txt那个在发生中断的地方,下次获取数据的开头会有一部分乱码。本来以为是我文件指针移动的问题,但是我用wfetch查看,发现也是这样子的。图如下:
好了。麻烦清楚原因的大神们,给好好指点下。有没听明白的地方,尽管问。
[最优解释]
你是做下载,又不是做解析,解析的话,要分析文件,看它是什么格式,也就是utf8,unicode什么的。
这种网络包,还是汉字,出现几个乱码很正常。
找个开源浏览器看一下,这部分要比下载复杂多了。这么多年,也就那么几个浏览器,下载器却n多,呵呵呵
[其他解释]
一直也想做个断点续传,一直没做
[其他解释]
我猜:
文本文件可能也要用二制的方式.
[其他解释]
帮顶~同样不懂。
[其他解释]
求指点啊求指点。。 今天小弟生日,可能回复不及时。抱歉啊。。
求指点啊求指点。。
[其他解释]
不带这样的啊。。 来点大神回答下啊!!
[其他解释]
应该不是。 我说了,我用wfetch查看。 也是那样的
[其他解释]
这个乱码是放在下载文件中出现的。 那么如果我下载什么安装包的话,漏掉字节或者多字节,都等于白下载了。。
[其他解释]
问题得到解决了。
是我range中初始位置设置有问题。比如我当前文件大小是2048,那么就应该从位置2048开始获取,而我写成了从2048-1的位置开始了。。因此多了一个字节。
明天来结贴。