一个基于WinHttp的轻量级的分片下载库介绍

QMTinyDL是一个基于WinHttp的轻量级下载库,支持内存下载、分片Range文件下载,适用于小文件下载和特定内容下载。库需要Windows XP SP1以上系统,提供IQMTinyDLSink接口用于回调下载状态,包含下载完成、进度和错误处理。IQMTinyDLMgr接口用于启动和停止下载任务,并支持设置代理。

作者:magictong

日期:2018/04/09


资源下载

https://download.csdn.net/download/magictong/10370195

 

主要目的

1、下载文件到内存。

2、下载分片Range文件(譬如下载某个资源文件的第100字节到第150字节的内容)。

3、不需要回调线程是UI线程(有消息循环)。

 

适用场景

1、小文件全量下载(注:暂未支持断点续传)。

2、分片文件下载(注:下载某个文件中的一段内容)。

3、支持https协议(仅支持只需要验证服务器端的情况)。

 

适用系统

受限于WinHttp的支持,本库需要Windows XP SP1以上或者Windows 2000 SP3以上才能使用。

 

头文件介绍

1、QMTINYDL::IQMTinyDLSink接口

使用类需要从QMTINYDL::IQMTinyDLSink接口进行继承,实现它的三个虚函数(OnTinyDLComplete,OnTinyDLProgress,OnTinyDLError),OnTinyDLComplete必须实现,其它两个可以按需要实现,这个接口主要用于下载完成,下载失败,下载出错,下载进度的回调,使用者只有通过此接口的回调感知下载库的工作进度。回调函数参数说明参考下面的注释。

//-------------------------------------------------------------------------

// 类名     : IQMTinyDLSink

// 功能     : QMTinyDL下载回调接口

// 附注     :使用IQMTinyDLMgr接口进行下载的类需要继承本接口

// -------------------------------------------------------------------------

class IQMTinyDLSink

{

public:

   virtual ~IQMTinyDLSink() {}

 

    //-------------------------------------------------------------------------

    // 函数     :OnTinyDLComplete

    // 功能     :下载结束回调(dwErr==0表示下载成功)

    // 返回值  : virtualvoid

    // 参数     : LONGlTaskID任务id

    // 参数     : void*pBuffer如果是下载到内存需求,则指向该内存,如果是下载到文件,则指向(wchar*)文件路径

    // 参数     : DWORDdwSize下载总长度

    // 参数     : DWORDdwErr错误码

    // 参数     : PVOIDpContext上下文参数

    // 附注     :必须实现

    //-------------------------------------------------------------------------

   virtual void OnTinyDLComplete(LONG lTaskID, void* pBuffer, DWORD dwSize,DWORD dwErr, PVOID pContext) = 0;

 

    //-------------------------------------------------------------------------

    // 函数     :OnTinyDLProgress

    // 功能     :下载进度回调

    // 返回值  : virtualvoid

    // 参数     : LONGlTaskID任务id

    // 参数     : DWORDdwLen当前下载长度

    // 参数     : DWORDdwTotalLen需要下载总长度

    // 参数     : PVOIDpContext上下文参数

    // 附注     :可选实现

    //-------------------------------------------------------------------------

   virtual void OnTinyDLProgress(LONG lTaskID, DWORD dwLen, DWORDdwTotalLen, PVOID pContext) {}

 

    //-------------------------------------------------------------------------

    // 函数     :OnTinyDLError

    // 功能     :下载中途错误回调

    // 返回值  : virtualvoid

    // 参数     : LONGlTaskID任务id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值