用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧VisualBasic

如何实现断点传续的功能

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 19:55:33
  当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)。

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:13,828.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号