netty实现断点续传

教程大全  / 倒序浏览   ©

#楼主# 2020-2-9

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
HTTP的断点续传:

HTTP1.1默认支持断点续传。
怎么实现:
加入现在让我们来实现以下断点续传,我们会怎么筹划呢?起首映入一个场景,双十一到了,快递员小刚有大量的快递需要送,为了早点将快递送完,小刚顾了一个帮手小曾,为了不弄丢快递,小刚将快递都按顺序贴上了号码,每次小刚和小曾都按顺序的拿一部分出去送,送完了再回来拿,就这样,小刚很快的就将快递送完了。(哈哈,例子不是很准确,但是有一点点意思在),这些快递就像是要传的数据,数据都有编号,一次性拿的时间都是按顺序拿一部分,这样的好处是,直到那些是已经送完的,哪些是还没有送的,相当于断点,那怎么实现续传呢,我们已经记录了那些已经送了,哪么没有送,就可以接着送剩下的部分了,那这样的优点是什么呢?一个人的力量太小,在断点续传的时间,我们可以多线程的来传输,这样就大大的提高了效率。所以总结一下关键点就是:数据可标记,保存通报信息。好了,详细来看一下HTTP是怎样支持的。

客户端字段:
  1. Range字段:
    发送range字段,实现片段式的下载。

Ranges: (unit=first byte pos)-[last byte pos]
Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分
Ranges: bytes=0~N 下载第0-N字节范围的内容
Ranges: bytes=M-N 下载第M-N字节范围的内容
Ranges: bytes=-N 下载最后N字节内容

  1. if-range:
    用于客户端到服务端的哀求,用于判断实体是否发生改变,必须与Range共同利用。若实体未被修改,则相应所缺少的那部分;否则,相应整个新的实体。
服务端字段:
  1. Accept-range
    用于server到client的应答,client通过该自段判断server是否支持断点续传。
    Accept-Ranges:bytes 表示支持以bytes为单位进行传输。
    Accept-Ranges:none 表示不支持断点续传

  2. Content-Ranges:与Accept-Ranges在同一个报文内,通过该字段指定了返回的文件资源的字节范围。格式如下:
    Content-Ranges:bytes M-N/size 大小为size的文件的第M-N字节范围的内容

  3. ETag
    表示文件唯一性,完整性,文件有更新值将会改变。

状态码:

当支持利用断点续传时,将会返回206,否则返回200。

接下来我用netty实现断点续传。

netty实现断点续传:

步骤:
客户端想服务器发送上传文件哀求,并且将需要上传的文件信息发送 ==》
服务器保存上传信息,并且返回允许上传指令==>客户端开始上传,分段上传文件,标明上传文件下标==》
服务器接收文件,更新文件信息。==》
假如此时客户端中断传输,待下次再次传输的时间,需要重新发送发送哀求,服务端将会将需要的文件信息返回给客户端实现续传。

分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

火烧油条

新手猿

  • 主题

    2

  • 帖子

    2

  • 关注者

    0

楼主新帖

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆