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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: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

    // 功能     :

WinHTTP提供以下功能: WinHttpAddRequestHeaders 向HTTP请求句柄添加一个或多个HTTP请求标头。 WinHttpCheckPlatform 确定WinHTTP是否支持当前平台。 WinHttpCloseHandle 关闭单个 HINTERNET句柄。 WinHttpConnect 指定HTTP请求的初始目标服务器。 WinHttpCrackUrl 将URL分为其组成部分,例如主机名和路径。 WinHttpCreateProxyResolver 创建WinHttpGetProxyForUrlEx使用的句柄。 WinHttpCreateUrl 从组件部分创建URL,例如主机名和路径。 WinHttpDetectAutoProxyConfigUrl 查找代理自动配置(PAC)文件的URL。此功能报告PAC文件的URL,但不下载该文件。 WinHttpFreeProxyResult 释放从以前的调用WinHttpGetProxyResult检索的数据。 WinHttpGetDefaultProxyConfiguration 从注册表中检索默认的WinHTTP代理配置。 WinHTTPGetIEProxyConfigForCurrentUser 获取当前用户的Internet Explorer(IE)代理配置。 WinHttpGetProxyForUrl 检索指定URL的代理信息。 WinHttpGetProxyForUrlEx 检索指定URL的代理信息。 WinHttpGetProxyResult 检索到调用的结果WinHttpGetProxyForUrlEx。 WinHttpOpen 初始化应用程序对WinHTTP功能的使用。 WinHttpOpenRequest 创建HTTP请求句柄。 WinHttpQueryAuthSchemes 返回服务器支持的授权方案。 WinHttpQueryDataAvailable 返回可立即与读取数据的字节数 WinHttpReadData。 WinHttpQueryHeaders 检索与HTTP请求相关联的头信息。 WinHttpQueryOption 在指定的句柄上查询Internet选项。 WinHttpReadData 从WinHttpOpenRequest函数打开的句柄中读取数据 。 WinHttpReceiveResponse 结束由WinHttpSendRequest启动的HTTP请求 。 WinHttpResetAutoProxy 重置自动代理。 WinHttpSendRequest 将指定的请求发送到HTTP服务器。 WinHttpSetCredentials 将所需的授权凭证传递给服务器。 WinHttpSetDefaultProxyConfiguration 在注册表中设置默认的WinHTTP代理配置。 WinHttpSetOption 设置Internet选项。 WinHttpSetStatusCallback 设置WinHTTP可以在操作过程中进行调用的回调函数。 WinHttpSetTimeouts 设置涉及HTTP事务的各种超时。 WinHttpTimeFromSystemTime 根据HTTP版本1.0规范格式化日期和时间。 WinHttpTimeToSystemTime 获取HTTP时间/日期字符串并将其转换为 SYSTEMTIME结构。 WinHttpWriteData 将请求数据写入HTTP服务器。 WinHttpWebSocketClose 关闭WebSocket连接。 WinHttpWebSocketCompleteUpgrade 完成由WinHttpSendRequest启动的WebSocket握手。 WinHttpWebSocketQueryCloseStatus 获取服务器发送的关闭状态。 WinHttpWebSocketReceive 从WebSocket连接接收数据。 WinHttpWebSocketSend 通过WebSocket连接发送数据。 WinHttpWebSocketShutdown 向WebSocket连接发送关闭框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值