`
wtrlay
  • 浏览: 23009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用 Java 实现断点续传-原理 (HTTP)

    博客分类:
  • java
阅读更多
断点续传的原理
其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。
打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:
假设服务器域名为
wwww.sjtu.edu.cn,文件名为 down.zip。
GET /down.zip HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Connection: Keep-Alive

服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:
200
Content-Length=106786028
Accept-Ranges=bytes
Date=Mon, 30 Apr 2001 12:56:11 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT

所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给 Web 服务器的时候要多加一条信息 -- 从哪里开始。
下面是用自己编的一个"浏览器"来传递请求信息给 Web 服务器,要求从 2000070 字节开始。
GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

仔细看一下就会发现多了一行 RANGE: bytes=2000070-
这一行的意思就是告诉服务器 down.zip 这个文件从 2000070 字节开始传,前面的字节不用传了。
服务器收到这个请求以后,返回的信息如下:
206
Content-Length=106786028
Content-Range=bytes 2000070-106786027/106786028
Date=Mon, 30 Apr 2001 12:55:20 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT

和前面服务器返回的信息比较一下,就会发现增加了一行:
Content-Range=bytes 2000070-106786027/106786028
返回的代码也改为 206 了,而不再是 200 了。
知道了以上原理,就可以进行断点续传的编程了。
分享到:
评论

相关推荐

    用Java实现断点续传.txt

    ### 用Java实现断点续传的技术解析 #### 一、技术原理概述 断点续传是一种在网络连接不稳定或在下载过程中出现意外中断时能够继续完成下载的技术。它通过记录下载过程中断时的位置,当重新启动下载任务时,可以从...

    用Java实现断点续传(HTTP)

    【Java实现断点续传(HTTP)】 断点续传是一种网络传输技术,允许用户在文件下载中断后从已下载的部分继续,而无需重新下载整个文件。这种技术尤其有用,当下载大文件时,网络连接意外中断或者用户需要暂时停止下载...

    用Java实现断点续传

    【断点续传的原理】 断点续传是一种在文件传输过程中...总结,Java实现断点续传涉及到网络编程、文件操作、HTTP协议以及错误处理等多个方面,通过合理的设计和实现,可以在不稳定的网络环境中提供高效的文件下载服务。

    用Java 实现HTTP断点续传技术文档【附实例代码】

    以下是一个简单的示例代码框架,用于演示如何使用Java实现断点续传: ```java public class SiteFileFetch { public static void main(String[] args) { String urlStr = "http://www.example.com/down.zip"; ...

    java断点续传,刚刚整理出来多线程处理

    在Java中实现断点续传,通常涉及到文件I/O操作、HTTP协议的理解以及多线程编程。以下将详细介绍这些知识点。 首先,我们要理解什么是断点续传。断点续传(Resume Transfer)是一种允许用户在网络传输过程中,如果...

    Java实现断点续传程序

    Java实现断点续传程序是一项在文件传输领域中常见的技术,尤其在大文件下载或上传时,能够提高效率并提供良好的用户体验。以下是关于这个主题的详细讲解。 **断点续传的原理** 断点续传的基本思想是允许用户在文件...

    socket做的支持多线程断点上传or断点续传Java源码

    为了深入理解这个系统的工作原理,你需要阅读源代码,理解类的设计和线程管理,以及如何与服务器进行交互以实现断点续传。同时,也要注意代码中可能包含的错误处理和重试机制,这些都是保证系统稳定性的关键部分。...

    用 Java 实现断点续传 (HTTP)

    ### Java实现断点续传的关键几点 1. 客户端在发送请求时设置Range头,指定需要下载的文件的起始字节位置。 2. 服务器端需要检查请求头中的Range字段,确定要返回的文件范围,并在响应头中设置Content-Range字段。 3...

    fastDFS断点续传实例

    在这个实例中,我们将探讨如何在FastDFS中实现断点续传功能,并基于一个名为"vvhcc-fastdfs"的压缩包文件进行讲解。 1. **FastDFS架构与原理** FastDFS由两部分组成:跟踪服务器(Tracker Server)和存储服务器...

    java断点续传的原理

    Java 断点续传的原理主要涉及到网络编程、文件处理以及多线程技术。断点续传是指在上传或下载大文件时,如果因为网络中断或其他原因导致传输不完整,可以从上次中断的地方继续传输,而不需要从头开始,极大地提高了...

    JAVA实现HTTP断点续传[借鉴].pdf

    以下将详细讲解断点续传的原理以及如何使用Java来实现。 断点续传的原理主要依赖于HTTP协议的范围请求(Range Request)特性。当客户端希望从已下载的部分开始继续下载文件时,它会在HTTP请求头中添加一个`Range`...

    fastdfs断点续传代码

    对于开发者来说,理解FastDFS的工作原理和API使用,以及如何在代码层面实现断点续传的逻辑,是非常关键的技能。在实际项目中,可以结合具体的业务需求和环境进行优化,例如使用异步上传、多线程处理等技术进一步提升...

    Java实现文件的断点续传(HTTP)

    #### 二、Java 实现断点续传的关键技术 ##### 1. 发送带有Range的HTTP请求 在Java中,可以通过`HttpURLConnection`类轻松地发送带有`Range`字段的HTTP请求。下面是一个示例代码: ```java URL url = new URL(...

    java断点续传源代码

    下面我们将深入探讨Java实现断点续传的原理和关键点。 1. **断点续传的原理**: 断点续传的核心在于保存已下载部分的信息,通常包括已下载的文件大小、最后的偏移位置等。当下载中断后,系统会记录当前的下载状态...

    基于c#的webapi断点续传几种方式及webclient断点续传下载.zip

    本资料包“基于C#的WebAPI断点续传几种方式及WebClient断点续传下载.zip”主要探讨了两种在C#环境下实现断点续传的方法:一是通过WebAPI实现服务端的断点续传功能,二是使用WebClient类进行客户端的断点续传下载。...

Global site tag (gtag.js) - Google Analytics