zoukankan      html  css  js  c++  java
  • 断点续传问题

    http://hi.baidu.com/cmdmac/item/28af7f0c0083e3f1a01034a4

    好久没写过什么文章,今天遇到断点续传的问题,就写写经历吧。

       现在的服务器一般都支持断点续传。断点续传的原理其实很简单,主要是要了解HTTP协议。在HTTP协议请求中,如果想从文件的某一位置接受数据,就要加上Range头部,Range头部的格式有如下几种情况:

    表示头500个字节:bytes=0-499  
      表示第二个500字节:bytes=500-999  
      表示最后500个字节:bytes=-500  
      表示500字节以后的范围:bytes=500-  
      第一个和最后一个字节:bytes=0-0,-1  
      同时指定几个范围:bytes=500-600,601-999

    在发出带Range的请求后,服务器会在Content-Range头部返回当前接受的范围和文件总大小,如:

    Content-Range: 0-499/22400

    这里0-499是指当前发送的数据的范围,而22400则是文件的总大小。

    呵呵,很简单吧。

    用QT实现HTTP请求,只要用QNetworkRequest,然后setRawHeader("Range", value);然后用QNetworkAccessManager get就可以啦。

        今天遇到的问题主要是,一开始发送的请求并没有Range头部,则返回的头部Conent-Length就是文件的总大小,而后来进行断点续传时发送了Range头部,Content-Length返回的并不是文件的总大小,而当前返回数据的大小。另外还知道了QString有个函数toInt可以把字符串转换成整型。

  • 相关阅读:
    @从零开始实现一个插件化框架(一)
    @从零开始实现一个插件化框架(二)
    @从零开始实现一个插件化框架(三)
    @CoordinatorLayout使用详解: 打造折叠悬浮效果
    Oracle 11g数据库详细安装过程
    web service 的跨语言特性
    struts2--值栈
    事务处理中如何获取同一个connection 对象
    jsp中文乱码问题
    设置工作集
  • 原文地址:https://www.cnblogs.com/Travis990/p/4483548.html
Copyright © 2011-2022 走看看