就剩5分了,高手们帮帮忙!!关于断点续传的实现 (5分)

  • 主题发起人 主题发起人 zzfloat
  • 开始时间 开始时间
Z

zzfloat

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ftp 和http下载文件 如何修改属性实现断点续传?
 
用网际快车吧
 
我是要自己编程实现!最好有个例子!
 
我想应该研究研究FTP和HTTP的协议的实现方法,以及它们的上层协议,
但这不是本菜鸟的水平范围,这里的网络高手很多,不过你的分很少.
 
我找到了一些资料,但我是太菜了还不知道怎么做!现在给你们发过来大家一起看看!
当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 “分段下载的程序,怎样得到客户端文件的各线程的断点位置”

此问题由李海回答。

 

去看 delphi5 / demo 下的 FastNet 演示吧, 足够
解决你的问题了.呵呵
 
我是要用c++builder做的!想自己实现代码有人可以帮我么?
 
帮你提前
 
我可以帮你关于http得部分,但ftp我没研究过。
先到我的网站看看 http://myzeroworld.yeah.net
还有就在这里提出,留一个E-mail,我传我写的一个http服务器的源代码,
让你看看服务器端是如何只持续传的,看看就知道客户端是如何只持续传的了。
 
谢谢大家帮忙和支持!
我的email是zzfloat@163.com
 
to:Pan Ying
你的网址http://myzeroworld.yeah.net
上的下载文件没有一个可以下载,都找不到文件!
 
大家帮帮忙吧!很急的!
谁有什么好办法告诉我一声,谢谢大家了!
mail: zzfloat@163.com
 
那在局域网内copy是否可以断点续传???
 
后退
顶部