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

WordPress搭建社区网站软件下载免费大全网站

WordPress搭建社区网站,软件下载免费大全网站,如何做自己的淘宝客网站,做瞹瞹嗳免费网站在线观看coco2dx c HTTP实现 达到的结果如下面的 iPhone截图 android 日志截图 流程图例如以下 功能主要通过CURL c pthread 实现 我实现的不是多线程断点#xff08;假设要实现能够依据我这个进行加入任务序列#xff0c;可參考 cocos2d-x 中AssetsManager的实现#xff0c;事实上… coco2dx c HTTP实现  达到的结果如下面的 iPhone截图 android 日志截图 流程图例如以下 功能主要通过CURL c pthread 实现 我实现的不是多线程断点假设要实现能够依据我这个进行加入任务序列可參考 cocos2d-x 中AssetsManager的实现事实上我的部分也是參考这个写的 为什么写这个呢 原因就是 AssetsManager是不支持断点续传的 博客地址http://blog.csdn.net/vpingchangxin/article/details/22309067 详细能够去CURL官网或者找资料科普一下 PS:假设是版本号公布最后设置超时时间20秒左右否则下载会占用很多其它下载实现效率等问题 我是为了測试 设置超时时间为2秒 1.先创建一个界面进行控制进行下载、停止、删除、进度 并绑定事件 2.在进行下载中开一个线程进行下载 由于牵涉到UI不开线程UI会卡着阻塞UI线程直到下载完毕以下是事件中的控制 HelloWorldSecene.cpp中的实现 void HelloWorld::menuCallback(CCObject* pSender) {CCMenuItem *item (CCMenuItem *)pSender;switch (item-getTag()) {case 1: // down startCCDirector::sharedDirector()-getScheduler()-scheduleSelector(schedule_selector(HelloWorld::updateUI), this, 0, false); // HttpClient中參考isStop false;this-threadStart();break;case 2: // down stopisStop true;break;case 3:if (isStop) {CCLog(downFilePath:%s,downFilePath.c_str());if (access(downFilePath.c_str(), 0) 0) {remove(downFilePath.c_str());CCMessageBox(删除成功, 温馨提示);}else{CCMessageBox(没有找到文件文件夹, 温馨提示);}}else{CCMessageBox(下载中或没有文件下载, 温馨提示);}break;default:break;} } 3。实现线程类并回调设置 // 启动线程的方法 int HelloWorld::threadStart() {pthread_mutex_init(g_downloadMutex, NULL);int errCode0;pthread_t th_curlDown; // 线程初始化do {pthread_attr_t tAttr;errCodepthread_attr_init(tAttr);CC_BREAK_IF(errCode!0);errCodepthread_attr_setdetachstate(tAttr, PTHREAD_CREATE_DETACHED);if(errCode!0) {pthread_attr_destroy(tAttr);break;}errCodepthread_create(th_curlDown, tAttr, thread_funcation, this);} while (0);return errCode; }// 须要线程来完毕的功能都写在这个函数里 void* HelloWorld::thread_funcation(void *arg) {CCLOG(thread started...);HelloWorld *hw (HelloWorld*)arg;hw-ccc new CurlDown(http://developer.baidu.com/map/static/doc/output/BaiduMap_AndroidSDK_v2.4.0_All.zip,hw-downFilePath);// ccc-mDownloadUrl http://developer.baidu.com/map/static/doc/output/BaiduMap_AndroidSDK_v2.4.0_All.zip;// int leng ccc-getDownloadFileLenth();hw-ccc-setDelegate(hw);hw-ccc-downloadControler();return NULL; }4.实现回调进度、成功、错误里面用到线程锁对数据进度更新UI本来对线程就不熟悉问了群里面的大牛看了不少资料 void HelloWorld::onError(CurlDown::ErrorCode errorCode){CCLog(error);pthread_mutex_lock(g_downloadMutex);updateStr error;pthread_mutex_unlock(g_downloadMutex);CCDirector::sharedDirector()-getScheduler()-unscheduleSelector(schedule_selector(HelloWorld::updateUI), this); } void HelloWorld::onProgress(double percent, void *delegate, string filefullPath){ // 下载进度CCLog(donw progress:%.2f%%,percent);if (isStop) {CurlDown * cd (CurlDown *)delegate;// pthread_mutex_lock(g_downloadMutex);cd-setStopDown();// pthread_mutex_unlock(g_downloadMutex);}pthread_mutex_lock(g_downloadMutex);const char * per CCString::createWithFormat(donw progress:%.2f%%,percent)-getCString();updateStr per;downFilePath filefullPath;pthread_mutex_unlock(g_downloadMutex); } void HelloWorld::onSuccess(string filefullPath){CCLog(success);pthread_mutex_lock(g_downloadMutex);updateStr success;downFilePath filefullPath;pthread_mutex_unlock(g_downloadMutex); }5.CurlDown.h CurlDown.cpp类实现 能够直接抽取出来用于不论什么地方。没有牵涉到cocos2d-x部分cocos2d-x 部分能够删除没关系 1)对类初始化 static pthread_mutex_t g_downloadMutex_1;CurlDown::~CurlDown(){mFileLenth 0; } CurlDown::CurlDown():isStop(false),mDownloadUrl(),timeout(2){ // test timeout 2 seconds. if release timeout 20 secondsmFileLenth 0;mFilePath ;pthread_mutex_init(g_downloadMutex_1, NULL); } CurlDown::CurlDown(string downUrl,string filePath):mFileLenth(0),isStop(false),mDownloadUrl(downUrl),timeout(2),mFilePath(filePath){ // test timeout 2 seconds. if release timeout 20 secondsmDownloadUrl downUrl;pthread_mutex_init(g_downloadMutex_1, NULL); }void CurlDown::setDelegate(CurlDownDelegate * delegate) {mDelegate delegate; } 2控制下载方法 void CurlDown::downloadControler() {CCLog(--1-);mFileLenth getDownloadFileLenth(); // 获取远程文件大小if (mFileLenth 0) {cout download file fail... endl;mDelegate-onError(kNetwork);return;}vectorstring searchPaths CCFileUtils::sharedFileUtils()-getSearchPaths();vectorstring::iterator iter searchPaths.begin();searchPaths.insert(iter, mFilePath);CCFileUtils::sharedFileUtils()-setSearchPaths(searchPaths);CCLog(--2-mFileLenth:%f,mFileLenth);mFileName mDownloadUrl.substr(mDownloadUrl.rfind(/) 1);CCLog(--3-);CCLog(mFileName:%s;,mFileName.c_str()); // mFilePath CCFileUtils::sharedFileUtils()-getWritablePath(); // CCLog(--5-);mFilePath mFilePath mFileName;CCLog(mFilePath:%s,mFilePath.c_str());CCLog(--6-);bool ret false;while (true){ // 循环下载 每30秒进行下载 避免断网情况ret download(); //直接下载 进行阻塞线程CCLog(----stop---%s------,isStop?true:false);if (isStop) { // 假设进行停止 breakCCLog(----stop---------);break;}if (ret ){ //下载完毕break;}sleep(0.5); //每次下载中间间隔0.5秒}if (ret) {CCLog(download ok);mDelegate-onSuccess(mFilePath);} else {CCLog(download fail);mDelegate-onError(kUncompress);} } 3核心下载 #pragma mark 进行下载 bool CurlDown::download() {FILE *fp NULL;if(access(mFilePath.c_str(), 0)0) { // 以二进制形式追加fp fopen(mFilePath.c_str(), ab);} else { // 二进制写fp fopen(mFilePath.c_str(), wb);}if (fp NULL) {// 假设文件初始化失败进行返回return false;}// 读取本地文件下载大小long localFileLenth getLocalFileLength(); //已经下载的大小CCLog(filePath:%s。leng:%ld,mFilePath.c_str() , localFileLenth ); //4397779 //3377875CURL *handle curl_easy_init();std::string packageUrl mDownloadUrl; //下载地址下载文件名称curl_easy_setopt(handle, CURLOPT_URL, packageUrl.c_str()); // http://curl.haxx.se/libcurl/c/fopen.htmlcurl_easy_setopt(handle, CURLOPT_TIMEOUT, timeout);curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, my_write_func); //写文件回调方法curl_easy_setopt(handle, CURLOPT_WRITEDATA, fp); // 写入文件对象curl_easy_setopt(handle, CURLOPT_RESUME_FROM, localFileLenth); // 从本地大小位置进行请求数据// curl_easy_setopt(handle, CURLOPT_RESUME_FROM_LARGE, localFileLenth); // 坑curl_easy_setopt(handle, CURLOPT_NOPROGRESS, 0L);curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, my_progress_func ); //下载进度回调方法curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, this); // 传入本类对象CURLcode res curl_easy_perform(handle);fclose(fp);return res CURLE_OK; }以下大家要问道的就是求源代码^..^源代码已经上传github https://github.com/pingchangxin/BPDownload cesd 下载位置http://download.csdn.net/detail/vpingchangxin/7108649 我就不再这里mac她跑到隔壁 windows在没有运行至win繁琐的头痛的结构 转载于:https://www.cnblogs.com/hrhguanli/p/4573005.html
http://www.zqtcl.cn/news/604474/

相关文章:

  • 景区网站建设材料代运营有哪些套路坑
  • 六安电商网站建设哪家好有关做美食的网站
  • 卸载wordpress插件网店seo关键词
  • 金山网站制作赤城seo网站优化排名
  • 提供坪山网站建设深圳商城网站哪家做的好
  • 有什么网站可以帮人做模具吗热搜榜百度一下你就知道
  • 深圳网站优化技巧邹城住房城乡建设部网站
  • 小型企业网站建站桂林市中考信息网官网
  • 雏鸟app网站推广做网站用宋体有版权问题吗
  • 建立网站数据库开公司流程及费用2022最新
  • 外贸谷歌网站推广wordpress调用上传图片
  • 360提示危险网站原因威海 网站开发
  • 赣州本地网站网站怎么写
  • 物业公司网站设计湛江做网站软件
  • 做招聘求职网站wordpress启用插件出错
  • 珠海网站运营网站个人备案流程
  • 网站开发用什么图片格式最好网络营销名词解释是什么
  • 做柜子网站老电脑做网站服务器
  • 域名购买网站网店装修是什么
  • wordpress 网站备份为什么企业要建设自己的企业文化
  • 想做一个部门的网站怎么做潍坊网站建设价
  • 网站建设公司的公司哪家好什么行业必须做网站
  • 电子商务网站前台设计wordpress 上传文件大小
  • 深圳市住房和城乡建设局网站非常好的资讯网站设计
  • 长春作网站建设的公司国家建设环保局网站
  • 网站开发的有哪些好的软件wordpress菜单栏的函数调用
  • 家庭清洁东莞网站建设技术支持建筑模板厂投资多少钱
  • 郑州企业建站详情网站开发和网页开发有什么区别
  • 山西古建筑网站个人网站可以做自媒体吗
  • 腾讯云服务器可以做网站wordpress中文正式版