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

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://www.xdnf.cn/news/20333.html

相关文章:

  • 【VoNR】VoNR 不等于 VoLTE on 5G
  • vcenter管理的4台安装了esxi机器组成的HA,故障后自恢复理解
  • 飞牛NAS配置FRP内网穿透:实现远程访问
  • DocuAI深度测评:自动文档生成工具如何高效产出规范API文档与数据库表结构文档?
  • 【教学类-36-10】20240905(通义万相)-A4各种大小的鱼制作“吐泡泡的鱼”01版
  • Python反向迭代完全指南:从基础到高性能系统设计
  • C++从入门到精通(视频教程)
  • More Effective C++ 条款30:代理类
  • 2025高中文凭能考的证书大全
  • 2021/07 JLPT听力原文 问题一 4番
  • 第八章 惊喜05 笑笑点评团队
  • Claude Code成本浪费严重?80%开支可省!Token黑洞解密与三层省钱攻略
  • 使用YOLO11训练鸟类分类模型
  • AI应用开发-技术架构 PAFR介绍
  • JS魔法中介:Proxy和Reflect为何形影不离?
  • 【1】MOS管的结构及其工作原理
  • Linux系统: docker安装RagFlow教程
  • 【工具变量】上市公司企业海外业务收入数据集(2003-2024年)
  • C++ map和set
  • 2025年经济学专业女生必考证书指南:打造差异化竞争力
  • Netty从0到1系列之JDK零拷贝技术
  • Spring DI详解--依赖注入的三种方式及优缺点分析
  • Windows 权限提升(一)
  • ES模块(ESM)、CommonJS(CJS)和UMD三种格式
  • Java全栈学习笔记30
  • RX 9 Audio Editor 音频编辑器安装教程(v9.3.0 Windows版)
  • if __name__=‘__main__‘的用处
  • 推荐收藏!5款低代码工具,告别复杂开发!
  • 8051单片机-蜂鸣器
  • 数据库索引结构 B 树、B + 树与哈希索引在不同数据查询场景下的适用性分析