http协议断点续传

会飞的猪 会飞的猪     2022-08-13     437

关键词:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace HttpDemo
{
    class Program
    {
        //需要下载的路径
        static string url = "http://www.aseoe.com/demo/api/jquery_aseoe_001.zip";
        //获取文件全称
        static string fileName = Path.GetFileName(url);
        //保存路径
        static string localPath = "D:\HttpCeShi\" + fileName;
        //未下载完后面加.temp后缀名
        static string tempPath = localPath + ".temp";
        //偏移量(断点)
        static int pos;

        static void Main(string[] args)
        {
            DownLoad();
            Console.ReadLine();
        }
        public static void DownLoad()
        {
            //如果存在要更新的文件就结束
            if (File.Exists(localPath))
                return;

            Stream localfs = null;
            //如果不存在未上传完文件(需断点续传文件)
            if (File.Exists(tempPath))
            {
                localfs = new FileStream(tempPath, FileMode.Open);
            }

            else
            {
                localfs = new FileStream(tempPath, FileMode.Create);
            }
            //获取断点
            pos = (int)localfs.Length;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("Accept-Charset", "GBK,utf-8");
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
            request.Method = "GET";
            request.Timeout = 30000;
            //文件总长度单位(B)
            long total = request.GetResponse().ContentLength;
            Console.WriteLine("总长度为:" + total);
            if (pos > 0)
                request.AddRange(pos);//偏移到断点

            HttpWebResponse responseResult = (HttpWebResponse)request.GetResponse();
            using (Stream stream = responseResult.GetResponseStream())
            {
                byte[] buffer = new byte[total - pos];

                int readSize = stream.Read(buffer, 0, buffer.Length);
                while (readSize > 0)
                {
                    localfs.Write(buffer, 0, readSize);
                    readSize = stream.Read(buffer, 0, buffer.Length);
                    Console.WriteLine("已下载:" + localfs.Length);
                }
                localfs.Close();
                File.Move(tempPath, localPath);//将临时文件改为正常文件后缀
                Console.WriteLine("下载完成!!!");
            }

        }


    }
}

掀开断点续传那一层面纱(下载篇)

1、简介  这一篇文章主要介绍的是http协议下载时的断点续传,详细到各个步骤。主要步骤有:DNS查找、TCP三次握手、http请求发送、TCP协议数据传输、暂停后的状态、继续下载、TCP三次握手、http请求发送、数据传输、。。。... 查看详情

http协议文件下载原理及多线程断点续传

...必要的,我想这也是大多数开发人员的习惯吧。对于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可: GET/Path/FileNameHTTP/1.0 Host:www.server.com:80 Accept:*/*&nbs 查看详情

超大文件上传和断点续传的组件

...从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头... 查看详情

http断点续传原理

...果完整,直接加载地图。3.如果不完整,需要通过一个http协议请求后台服务器传回完整的地图。 现在要增加一个断点续传的功能。也就是地图下载过程中,如果断网,丢包之类,重启游戏地图会继续下载,而不是重新下载 查看详情

图解:http范围请求,助力断点续传多线程下载的核心原理(代码片段)

题图:byCharlesLoyer一、序Hi,大家好,我是承香墨影!HTTP协议在网络知识中占据了重要的地位,HTTP协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成。大多数HTTP协议的使用方式,都是依赖设置不同... 查看详情

基于http的断点续传和多线程下载

  HTTP协议的GET方法,支持只请求某个资源的某一部分;  206PartialContent部分内容响应;  Range请求的资源范围;  Content-Range响应的资源范围;断点续传:  在连接断开重连时,客户端只请求该资源未下载的部分,而不... 查看详情

用c实现断点续传的功能,详细点的实现原理是啥嘞

...C实现断点续传的功能,详细点的实现原理是什么嘞于HTTP协议的多执行绪下载和断点续传的实现学生:叶升路指导教师:覃颖(三峡大学电气资讯学院)摘要:本文介绍了网路下载软体中的最新技术——多执行绪下载和断点续传... 查看详情

支持断点续传的大文件传输协议

文件传输协议(FTP)是一个被广泛应用的网络协议,FTP技术作为文件传输的重要手段,在数据通信领域一直发挥着举足轻重的作用,不支持断点续传,是Internet上最早也是最广泛使用的应用之一.从1971年A.K.Bhushan提出第一个FTP协议... 查看详情

ios大文件分片上传和断点续传

...已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上... 查看详情

超大文件上传和断点续传的组件

...从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头... 查看详情

超大文件上传和断点续传的源代码

...已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上... 查看详情

web大文件分块上传断点续传demo

...从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头... 查看详情

curl使用

CURL可以模拟浏览器,因此它同样支持多种协议FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE以及LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTPPOST方法,HTTPPUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码... 查看详情

http断点续传(代码片段)

断点续传从下载断开的位置,继续下载,直到下载完整四个必须的HTTP头域Range用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式:Range:(unit=firstbytepos)-[lastbytepos]Range:bytes=50-从第50个字节开始到最后一个字节R... 查看详情

http断点续传range与content-range(代码片段)

...节,用以下配置启用HTTP头信息打印后发现原来是设置了断点续传位置的原因curl_easy_setopt(m_pCurl,CURLOPT_VERBOSE,1L);故了解了一下HTTP断点续传的相关设置参考文章:1、HTTPHeader里的Range和Content-Range参数2、http断点续传原理:http头Range、... 查看详情

断点续传

--实现断点续传http://www.cnblogs.com/peaceli/archive/2011/04/06/breakpoint_upload.html  查看详情

java中文件大小超过多大需要断点续传

...A方支不支持断电续传功能(HTTP1.1),然后你查阅下HTTP1.1协议,在HTTP1.1版本里,可以通过设置请求包头某个字段的信息(使用URLConnection创建连接并使用setRequestProperty(Stringkey,Stringvalue)方法设置)从而精确读取文件的某一段数据... 查看详情

基于http的文件断点续传实现(代码片段)

基于Http的文件断点续传实现1:断点续传的介绍客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如... 查看详情