cocos2d-x AssetsManager libcurl使用心得
libcurl使用心得
最新正在写cocos客户端更新的逻辑,研究了一下cocos2d-x自带的Libcurl,以下是自己在使用过程中的心得和遇到的未解问题,希望大家一起讨论一下,欢迎大家指导。
首先,科普一下,Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持Windows,Unix,Linux等,线程安全,支持Ipv6。并且易于使用。
下面是本人重写的简单的下载包的过程:
bool AssetsManagerEx::downLoad()
{
m_iUpdateState = kUpdateStateDownloading;
// Create a file to save package.
//下载文件的存放位置
string outFileName = _storagePath + TEMP_PACKAGE_FILE_NAME;
//新建并打来一个文件 以便下载后写入
FILE *fp = fopen(outFileName.c_str(), "wb");
if (! fp)
{
CCLOG("can not create file %s", outFileName.c_str());
m_iUpdateState = kUpdateStateDownloadError;
return false;
}
fseek(fp,0, SEEK_END);
s_InitSize = ftell(fp);
// Download pacakge
CURLcode res;
//设定curl的链接
curl_easy_setopt(_curl, CURLOPT_URL, _packageUrl.c_str());
curl_easy_setopt(_curl, CURLOPT_WRITEFUNCTION, downLoadPackage);
//设置将data写入到文件流fp中
curl_easy_setopt(_curl, CURLOPT_WRITEDATA, fp);
//设为false 下面才能设置进度响应函数
curl_easy_setopt(_curl, CURLOPT_NOPROGRESS, false);
//进度响应函数,progressFunc显示下载进入或者上传进度
curl_easy_setopt(_curl, CURLOPT_PROGRESSFUNCTION, progressFunc);
//数据传输的对象
curl_easy_setopt(_curl, CURLOPT_RESUME_FROM, s_InitSize);
res = curl_easy_perform(_curl);
curl_easy_cleanup(_curl);
if (res != 0 && res != CURLE_RANGE_ERROR)
{
CCLOG("error when download package");
fclose(fp);
m_iUpdateState = kUpdateStateDownloadError;
return false;
}
CCLOG("succeed downloading package %s", _packageUrl.c_str());
fclose(fp);
m_iUpdateState = kUpdateStateDownloadSuccess;
return true;
}
cocos2d-x AssetsManager libcurl使用心得相关推荐
- 计算机科学精彩帖子收集
linux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Sourc ...
- Ios热更新,实时代码更新,动态更新,动态库framework
动态更新,iOS有三种处理方案 1,开源框架reactive native,但是编程语言是js iOS app可以在运行时从服务器拉去最新的js文件到本读,然后执行,因为js是一门动态的脚本语言 所以 ...
- android studio ant编译,Android Studio编译cocos2dx项目
一.所需工具 1.Android studio2.3 2.cocos2dx3.10 3.jdk1.8 4.ndkr9d 5.sdk 6.ant 7.python2.7.14 二.配置环境变量 1.sd ...
- 野蛮时代辅助脚本代码 为什么要在线更新资源和文件?
野蛮时代辅助脚本代码 为什么要在线更新资源和文件? 简单概括,如果你的游戏项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那 ...
- linux下c/c++方式访问curl的帮助手册
转自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用. ...
- 【步兵 经验篇】断点续传
[步兵 经验篇]断点续传 By EOS. 虽然 基于cocos写的,但是也可以用于其他地方,核心是curl库,只要引用就可以实现. 既然curl库本身是有断点续传的接口的,不用岂不可惜? 用途 断点续 ...
- Cocos2dx+lua打包wp8教程
研究了2周,终于研究出来,绝对原创,请转载的说明出处,这个内容可能有点长,但是如果你按照教程走,则一定会成功的,下面来说步骤: 一:开发环境和SDK Win8 操作系统:这里在官网上下载企业版或者专业 ...
- 如何优化cocos2d程序的内存使用和程序大小:第一部分
译者: 在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区 ...
- libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET
libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET libcurl 多线程使用注意事项 分类: C/C++学习 2012-05-24 18:48 2843人 ...
最新文章
- char(nchar)与varchar(nvarchar)的区别以及选择
- 2021-06-06
- bat 调用python
- 11.05 scrum report
- python网络爬虫_Python爬虫实战之网络小说
- wordpress拒绝访问_Nginx + Wordpress页面或帖子URL返回拒绝访问
- easyui验证:validatebox
- 面试容易问的 JavaScript 知识点,你知道几个?
- 为apache添加SSL支持
- java 端口_java – 如何找到可用的端口?
- sitecore系统教程之使用修补程序文件自定义Sitecore配置
- 用DVD镜像离线安装Debian的软件包
- 从0到1实现VueUI库思路
- 【软件】一个简单好用的取色器TakeColor(百度云免费下载链接)
- win10配置计算机环境变量,教你win10怎么设置环境变量
- 关于安装和使用IAR的出现的一些错误
- 网站被黑了不要慌,4招教你如何破解!网站被黑的10大原因
- AutoCAD.NET实现CAD截图
- PLC振荡电路——控制灯闪烁
- 关于NetBios的简单应用
热门文章
- object string java_Object类和String类
- c语言随机生成1到100随机数_VB之生成随机数
- 无限复活服务器,绝地求生无限复活模式怎么玩 无限复活玩法说明介绍
- Android Studio安装使用过程中踩到的坑
- 巩膜:论文翻译《一种改进的眼角检测算法》An Improved Algorithm for Eye Corner Detection
- 解决libstdc++.so.6: version `GLIBCXX_3.4.22' not found
- Tensorflow 对抗生成网络GAN 不服就GAN
- python编写hadoop代码
- matlab 中一些对数组或矩阵的处理
- 阿里云的技术创新,不是简单的路线之争