多线程断点下载开发总结(一) - Http head Range标记

    很久之前用DotNet 做了一个多线程的断点下载工具,今天突然需要用到一些东西,竟然一时想不起了,翻了翻源码,这里简单总结一下。

    断点下载 的基本协议采用的是Http 下载,那么服务器如何响应断点请求一个完整文件的部分数据呢,这里需要用到 Http 协议头 的 Range标记,客户端发起请求的时候加上 Range标记 例如,Range:bytes=0-128 ,表示请求的文件的第1个到128个字节的数据,这时候服务器响应下载时会返回 Http 响应头:Content-Range:  bytes  0-128/200 ,这里200是文件的总大小。下面是一个请求响应头的详细说明。

请求下载整个文件: 
GET  /file.rar  HTTP/1.1 
Connection:  close 
Host:  116.1.219.219 
Range:  bytes=0-801 //一般请求下载整个文件是bytes=0- 或不用这个头 
一般正常回应 
HTTP/1.1 200 OK 
Content-Length:  801      
Content-Type:  application/octet-stream  
Content-Range:  bytes  0-800/801 //801

注意:如果用户的请求中含有range ,则服务器的相应代码为206。
206 - Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。

你可能感兴趣的:(http,断点,range)