HTTP断点续传下载的原理

简介:

frombegintoend原文HTTP断点续传下载的原理

要实现断点续传下载文件,首先要了解断点续传的原理。断点续传其实就是在上一次下载断开的位置开始继续下载,HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。

这是一个普通的下载请求:

1
2
3
4
5
6
7
8
GET /test.txt HTTP/1.1 
Accept:*/* 
Referer:http: //192.168.1.96 
Accept-Language:zh-cn 
Accept-Encoding:gzip,deflate 
User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;.NET CLR 2.0.50727) 
Host:192.168.1.96 
Connection:Keep-Alive 

 这表示从1024字节开始断点续传(加入了Range:bytes=1024-):

1
2
3
4
5
6
7
8
9
GET /test.txt HTTP/1.1 
Accept:*/* 
Referer:http: //192.168.1.96 
Accept-Language:zh-cn 
Accept-Encoding:gzip,deflate 
User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;.NET CLR 2.0.50727) 
Host:192.168.1.96 
Range:bytes=1024- 
Connection:Keep-Alive 

 C#主要代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#region 以断点续传方式下载文件 
   
/// <summary> 
/// 以断点续传方式下载文件 
/// </summary> 
/// <param name="strFileName">下载文件的保存路径</param> 
/// <param name="strUrl">文件下载地址</param> 
public  void  DownloadFile( string  strFileName,  string  strUrl) 
     //打开上次下载的文件或新建文件 
     long  SPosition = 0; 
     FileStream FStream; 
     if  (File.Exists(strFileName)) 
    
         FStream = File.OpenWrite(strFileName); 
         SPosition = FStream.Length; 
         FStream.Seek(SPosition, SeekOrigin.Current); //移动文件流中的当前指针 
    
     else 
    
         FStream =  new  FileStream(strFileName, FileMode.Create); 
         SPosition = 0; 
    
     try 
    
         HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(strUrl); 
         if  (SPosition > 0) 
             myRequest.AddRange(( int )SPosition); //设置Range值 
         //向服务器请求,获得服务器的回应数据流 
         Stream myStream = myRequest.GetResponse().GetResponseStream(); 
         byte [] btContent =  new  byte [512]; 
         int  intSize = 0; 
         intSize = myStream.Read(btContent, 0, 512); 
         while  (intSize > 0) 
        
             FStream.Write(btContent, 0, intSize); 
             intSize = myStream.Read(btContent, 0, 512); 
        
         FStream.Close(); 
         myStream.Close(); 
         //文件下载完成 
    
     catch 
    
         FStream.Close(); 
    
  
#endregion 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

   本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6147157.html ,如需转载请自行联系原作者

相关文章
|
2月前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
136 70
|
29天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
29天前
【网路原理】——HTTP状态码和Postman使用
状态码(200,404,403,405,500,504,302),Postman下载和使用构造请求
|
29天前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
29天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
1月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
117 3
|
2月前
|
安全 算法 网络安全
一张图就把HTTPS工作原理讲明白了!
【10月更文挑战第31天】
134 1
一张图就把HTTPS工作原理讲明白了!
|
2月前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
|
2月前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。
|
3月前
|
缓存 移动开发 前端开发
HTTP请求走私漏洞原理与利用手段分析
HTTP请求走私漏洞原理与利用手段分析
88 1