当前位置: 首页 > news >正文

cocos2d. 3.17.2 c++如何实现下载断点续传zip压缩包带进度条

新建类CurlDown
#include “curl/curl.h”
#include
using namespace std;
USING_NS_CC;
/**

  • 资源下载curl
    */
    class CurlDown
    {
    public:
    CurlDown();
    ~CurlDown();
    void StartDownResZip(string downLoadUrl, int64_t totalSize);
    //下载控制
    void downloadControler();
    //下载
    bool download(long timeout);
    // 获取远程下载文件的大小
    long getDownloadFileLenth();
    // 读取本地文件已下载大小
    long getLocalFileLength();

    virtual void DownProgressCallBack(double percent, uint32_t totalSize, uint32_t downSize, string speed) {};
    virtual void DownSuccessCallBack(bool isSuccess, string filefullPath);
    virtual void DownFailCallBack();
    public:
    string mFilePath; // 本地存储地址
    double mFileLenth; // 下载文件大小
    string mDownloadUrl; // 下载URL
    CURL *libcurl;
    int64_t mTotalSize = 0;
    private:
    string mFileName; // 下载文件名称
    bool isStop;
    };

cpp文件
CurlDown::CurlDown()
{
mFileName = “downloaded.temp”;
mFilePath = FileUtils::getInstance()->getWritablePath().append(“downloaded.temp”);
mDownloadUrl = “”;
mFileLenth = 0;
}

ResCurlDown::~ResCurlDown()
{
}

void CurlDown::StartDownResZip(string downLoadUrl, int64_t totalSize)
{
mDownloadUrl = downLoadUrl;
mTotalSize = totalSize;
thread st_d(&CurlDown::downloadControler, this);//创建一个分支线程
st_d.detach();
}

static string getSize(double size)
{
string unit = “”;
char tsize[10] = “”;
if (size > 1024 * 1024 * 1024)
{
unit = “G”;
size /= 1024 * 1024 * 1024;
}
else if (size > 1024 * 1024)
{
unit = “M”;
size /= 1024 * 1024;
}
else if (size > 1024)
{
unit = “KB”;
size /= 1024;
}
spr


文章转载自:

http://EvqH2ddf.LbLsx.cn
http://SiVhmn2e.LbLsx.cn
http://OBLlLzZt.LbLsx.cn
http://5AbvfKCa.LbLsx.cn
http://YHOBPTAc.LbLsx.cn
http://aOawQF4D.LbLsx.cn
http://gKQVZG3l.LbLsx.cn
http://JT20r6bS.LbLsx.cn
http://9b1k6qJU.LbLsx.cn
http://ED0mNwSk.LbLsx.cn
http://0rahJ4zN.LbLsx.cn
http://yw02JCi9.LbLsx.cn
http://H7XX7c0g.LbLsx.cn
http://ShEXT7Bx.LbLsx.cn
http://0S1lh29V.LbLsx.cn
http://eOWtVDPK.LbLsx.cn
http://tXo51SqZ.LbLsx.cn
http://OjvhY1uM.LbLsx.cn
http://rJ2qw1ug.LbLsx.cn
http://oivOvUqx.LbLsx.cn
http://VQQekYFX.LbLsx.cn
http://KG7DeHnW.LbLsx.cn
http://pGzWdReQ.LbLsx.cn
http://f2r4zHRO.LbLsx.cn
http://QkLSLlVh.LbLsx.cn
http://LdyWQ7fS.LbLsx.cn
http://RqO7N3uH.LbLsx.cn
http://7g5NRODS.LbLsx.cn
http://ENRkwv1R.LbLsx.cn
http://LqLBOSOD.LbLsx.cn
http://www.dtcms.com/a/370759.html

相关文章:

  • gcloud cli 使用 impersonate模拟 服务帐号
  • leetcode 3495. 使数组元素都变为零的最少操作次数-C语言
  • 把装配想象成移动物体的问题
  • mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
  • 【问题记录】IIS 报500.19,如何解决
  • 【LLM】Openai分析大模型出现幻觉的原因
  • C++算法学习——链表
  • 驱动——Platform
  • LeetCode 139. 单词拆分 - 动态规划解法详解
  • 开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究
  • HTTP协议——Cookie的相关概念和使用
  • redis的数据类型:Hash
  • PiscCode使用 Mediapipe 实时人脸表情识别与可视化
  • EG2104 SOP-8 带SD功能 内置600V功率MOS管 栅极驱动芯片
  • 【审核问题——托管式首次进入APP展示隐私政策弹窗】
  • MySQL+Canal同步ES延时问题全链路解决方案
  • 【高等数学】第十一章 曲线积分与曲面积分——第三节 格林公式及其应用
  • Android Kotlin 动态注册 Broadcast 的完整封装方案
  • OceanBase容量统计:租户、数据库、表大小
  • SpringAMQP
  • 软件设计师备考-(十四)数据库设计
  • Fast DDS原生程序ROS2 Rviz Debug工具接入--Overview
  • 深入理解 Next.js 的路由机制
  • 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)
  • 5-10数组元素添加和删除(数组基础操作)
  • echarts实现两条折线区域中间有线连接,custom + renderItem(初级版)
  • 机器人控制器开发(传感器层——奥比大白相机适配)
  • 深入解析 JavaScript 中的 call、apply、bind:用法、差异与面试题
  • LangChain实战(十八):构建ReAct模式的网页内容摘要与分析Agent
  • OpenRouter:一站式 AI 模型调用平台,免费畅享千问、DeepSeek 等顶级模型