cocos2d-x AssetsManager libcurl使用心得
libcurl使用心得
最新正在写cocosclient更新的逻辑。研究了一下cocos2d-x自带的Libcurl,下面是自己在使用过程中的心得和遇到的未解问题。希望大家一起讨论一下,欢迎大家指导。
首先,科普一下。Libcurl为一个免费开源的,clienturl传输库,支持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使用心得的更多相关文章
- libcurl使用心得-包括下载文件不存在处理相关(转)
libcurl使用心得 Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持 ...
- cocos2d-x 2.2 资源更新AssetsManager例子代码
转自:http://www.58player.com/blog-2327-601.html // // UpgradeLayer.h // AmazeDemo // // Created by lsw ...
- 最全的libcurl库资源整理
C++ 用libcurl库进行http 网络通讯编程 百度登陆协议分析!!!用libcurl来模拟百度登陆 C++使用libcurl做HttpClient 使用libcurl库进行HTTP的下载 li ...
- linux下c/c++方式访问curl的帮助手册
自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用.记 ...
- [Cocos2d-x]Lua 资源热更新
什么是热更新 所谓的热更新,指的是客户端的更新. 大致的流程是,客户端在启动后访问更新的URL接口,根据更新接口的反馈,下载更新资源,然后使用新的资源启动客户端,或者直接使用新资源不重启客户端. 热更 ...
- 项目在cocos 2.23移植到cocos 3.1.0所出现的bug
在建项目时一定要注意选择源代码!而不是预编译库 "extensions/ExtensionMacros.h”: No such file 项目右键-属性-配置属性-c/c++ - 常规-附加 ...
- [转]linux 下 使用 c / c++ 调用curl库 做通信开发
example: 1. http://curl.haxx.se/libcurl/c/example.html 2. http://www.libcurl.org/book: 1. http:/ ...
- 关于cocos2d安装时编译不成功(个人心得)
在解压cocos2d执行vs2010.sln时错误发生不能成功生成.遇到这样的错误: 1>c:\program files\microsoft sdks\windows\v7.0a\includ ...
- cocos2d心得关于精灵帧缓存
在cocos2d中,精灵帧缓存CCSpriteFrameCache是用来存储精灵帧的.它没有特别的属性,只存储了一些用来管理CCSpriteFrame的方法. 以一个例子来说明,一般在又纹理图集的程序 ...
随机推荐
- 【Visual Studio】设置使用多字符集
- svn没有"对号"等符号
[问题描述]调整svn建立好了服务端.安装客户端也检出成功了.但是就是没有对号符号. [解决方案]右键菜单,设置,里面有“图标覆盖”这个选项,把你的文件夹加入进去,然后注销windows用户重新登陆
- C#Json转Xml格式数据的方法
第一种方法 string Xml = "在这里写Json字符串"; XmlDictionaryReader reader = JsonReaderWriterFactory.Cre ...
- 用户找回密码功能JS验证邮箱通过点击下一步隐藏邮箱输入框并修改下一步按钮的ID
//这里是BaseDao /** * 获得一个对象 * @param hql * @param param * @return */ public Object get(String hql, Obj ...
- 洛谷 P1563 玩具谜题【模拟/环】
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...
- CS Academy Round #65 Count Arrays (DP)
题目链接 Count Arrays 题意 给定$n$和$m$个区间.若一个长度为$n$的$01$序列满足对于每一个给定的区间中至少有一个位置是$0$, 那么这个$01$序列满足条件.求有多少满足条 ...
- 2017广东工业大学程序设计竞赛决赛 F(LCA + 斐波那契数列性质)
不能组成三角形的极端数列:1,1,2,3,5,8,13,21,……到第50项时候肯定到1e9了…… 如果两个点之间距离大于50,则直接Yes…… 否则的话直接暴力取出所有边,然后升序排序,判断一下就可 ...
- 正确地使用GIT FORK
摘自github官方网站,稍后我将抽空翻译. Fork a repo https://help.github.com/articles/fork-a-repo/ Syncing a fork http ...
- 利用Django徒手写个静态页面生成工具
每个Geek对折腾自己的博客都有着一份执念 背景介绍 曾经多次在不同的平台写博客,但全部都以失败而告终.去年七月选择微信公众号做为平台开始了又一次的技术分享,庆幸一直坚持到现在,但随着文章发表的越来越 ...
- 以root用户身份在jenkins中运行shell命令
以下过程是CentOS 1.打开此脚本(使用VIM或其他编辑器): vim /etc/sysconfig/jenkins 2.找到$JENKINS_USER并更改为“root”: $JENKINS_U ...