如何实现断点传续的功能
要实现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)。
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论