网络蚂蚁的断点续传是怎样实现的?

chinabjgod 2000-06-26 04:22:00
本人要编制一个能Internet网断点续传的程序, 可不知怎样实现,请大虾帮忙,指点一二.
如何通过HTTP FTP协议实现文件的断点续传,要参考那些RFC文档,
首先谢谢了!
...全文
527 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bruce_zhao 2000-09-14
  • 打赏
  • 举报
回复
关注!
yaya 2000-06-30
  • 打赏
  • 举报
回复
dengdun:
我在FTP 上试了REST ,接着用RETR 怎么不能DownLoad,没有用REST 时执行很好。
您能不能把关键地方 Mail source code to me?
yaya
lizleiya@sina.com


dengdun 2000-06-30
  • 打赏
  • 举报
回复
出现这种情况的可能原因就是该Ftp服务器不支持断点续传,你可以在下载之前先尝试发送一个REST 12345的命令,如果服务器应答为OK的话便再次发送REST 12345命令。
dengdun 2000-06-28
  • 打赏
  • 举报
回复
1.我不知道蚂蚁是怎么实现的,我曾经写过一个单线程下载的程序,我每次向服务器发送请求的时候首先检查一下该文件的现有长度,然后将这个值发送给服务器。如果是多线程的话,我想应该将每个线程上次下载结束的文件位置都保存起来。
2.不可以在发送请求时加上结束位置的信息,但是你可以通过下面的方法来实现下载文件中间的一部分。比如说你想下载从12345-22345字节的文件数据,那么当服务器响应你的请求并开始向你发送数据时你可以只接收10000个字节,当接收到了10000个字节后该线程就主动关闭连接。
此外,需要提醒你的是,在接收数据的时候都应该加上服务器应答的数据长度。
chinabjgod 2000-06-28
  • 打赏
  • 举报
回复
mr/mr. dengdun:
有两个问题:
1 我如何知道当前下载的位置
2 可不可以在发送以上请求时加上结束位置的信息
请指教!
chinabjgod


mjyf 2000-06-27
  • 打赏
  • 举报
回复
我不清楚网络蚂蚁的断点续传是怎样实现的,但有一个思路:
1.断点续传:记录上次下在文件downloadfile的长度lenth1,设置url文件下载位置在lenth1,开始读取url文件并追加到downloadfile.
2.多通道下载:创建几个线程同时打开一个服务器上的文件(如:http类型),分别从不同的位置读取文件的一部分.
dengdun 2000-06-27
  • 打赏
  • 举报
回复
首先断点续传需要服务器的支持;
如果是Http服务器的话,在向Server发送请求时加上下面一句:
Range: bytes=12345-
就表明是从文件的12345字节处开始下载。
如果是Ftp服务器的话,就在登录成功后发送下面一条命令:
REST 12345
就可以实现从文件的某一特定的位置开始下载。
这样,你把下载的东西写到文件的指定位置,就实现了断点续传。
sunsetyang 2000-06-26
  • 打赏
  • 举报
回复
参考http ftp协议的rfc就可以了吧!
其实只是一个给定偏移量后接收数据的问题:
如ftp下面的:
rest 1000
get somefile.ext a.ext
这样将把somefile.ext的1000偏移地方的数据回传。
以后接收的数据是从1000开始的。
你看一下netant的下载log就可以很清楚的看到怎么
做的。不过都需要服务器端支持。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧