cocos2d-x AssetsManager libcurl使用心得
2014-06-10 18:28
337 查看
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使用心得
- cocos2d-x 3.10 热更新 使用AssetsManagerEx
- cocos2d-x 3.10 热更新 使用AssetsManagerEx
- 旧版本Cocos2d-X 在iOS6中libcurl.a及iOS6无法横屏问题
- libharu和pdflib 两种写pdf库文件使用心得
- JSON-LIB 使用心得
- Linux libcurl使用
- linux c libcurl的简单使用
- cocos2d-x系列笔记(8)---在cocos2d-x项目中使用curl与web服务器通信
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- linux c libcurl的简单使用
- System Center Virtual Machine Manager 使用心得
- 测试:cocos2d-x+libcurl加载网络图片【for android】
- cocos2d-x-使用fopen函数读取assets里的内容导致crash
- 【cocos2d-x】cocos2d-x 2.0.1 使用的一些心得
- 关于flex lib project的使用情况心得
- linux c libcurl的简单使用
- 关于WinCE CAB Manager 的一点使用心得
- 【Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法