我找到了一些资料,但我是太菜了还不知道怎么做!现在给你们发过来大家一起看看!
当CuteFTP、GetRight软件刚刚问世的时候,我觉得断点续传非常神奇,它们肯定采用了
什么高深的技术,不过认真一研究,发现也没有什么特别了不起的。断点续传的实质就是
能在下载时自由指定下载的启始位置。
要实现FTP的断点续传,FTP服务器必须支持REST指令,这条指令在FTP协议文本RFC959
中就已经定义了,不过它不是FTP服务器必须支持的指令。一般,你可以在下载前使用
REST 100命令进行实验,如果服务器正常执行了这条命令,说明该服务器支持FTP断点
续传。REST后面跟的数表示下载文件的起始位置,而REST 0表示从文件最开始处下载。
REST命令本身并不执行下载功能,你仍需要使用RETR命令执行下载工作。
要实现HTTP断点续传,Web服务器必须支持HTTP/1.1(协议文本为RFC2068),当然
也不是所有支持HTTP/1.1的服务器都实现了HTTP断点续传。一般在正常的Header之外,
还要在Header中加上如下几句:
Connection: close
Host: www.host.com
Range: bytes=1-100
这里的Range就是指定下载范围,也可以使用"100-"表示从100开始下载。更详细的内
容可以参见RFC2068。
上面介绍的是原理,现在一般编程都使用各种控件,所以实现的时候应该具体分析。
绝大多数HTTP控件都允许用户修改HTTP的Header,所以HTTP的续传比较容易实现。
有的FTP控件不支持REST命令,也有控件通过特殊的属性来实现REST命令,
如IP*Works!(http://www.dev-soft.com/)就使用StartByte属性来实现REST的功能。
VB本身包括的Internet Transfer Control不能实现FTP的断点传续,因为不支持
REST命令,但执行Execute 方法时利用requestHeaders参数可以实现HTTP的断点传续。
编程新手往往觉得Internet编程不直观,为了便于观察客户程序命令和服务器的响应,
你可以使用NetAnts(http://netants.yeah.net),它有一个Log窗口(图1)记录了客户程序
命令和服务器的响应,
从中你可以清楚地看到整个下载过程。
这方面的详细的例子可以参考
Internet Component Suite(http://www.rtfm.be/fpiette/indexuk.htm)。
相关问题:
QA001062 “FTP协议中的REST命令如何使用”
QA003323 “分段下载的程序,怎样得到客户端文件的各线程的断点位置”
此问题由李海回答。