最近游戏把资源(图片、配置、lua)的加载、更新全部改了 ,加载其实还好,就是不走之前的zip解压方式。

以前的大体流程:

下载 –> 启动 –> 解压 –> 更新 –> 进入游戏

现在的大体流程:

下载 –> 启动 –> 更新 –> 进入游戏

之前使用散文件gzip方式更新,现在换成下载zip包(断点下载)

在改动完成之后准备提交appstore,结果崩溃的发现在某些设备上debug可以正常更新、release就始终有问题,一直失败。后来在mac上安装了http的抓包工具:HttpScope。发现在head请求之后就不再继续走下去了,然后就猜测是否因为release的原因,导致写入文件时遇到权限问题了,然后就打log,重新生成release包测试…

最后定位到的问题是,head请求始终返回的是0,代码是这样写的:

m_pUrlHandle = curl_easy_init();

double dSize = 0.0f;curl_easy_setopt(m_pUrlHandle, CURLOPT_URL, m_strRemoteFileUrl.c_str());curl_easy_setopt(m_pUrlHandle, CURLOPT_HEADER, 1); curl_easy_setopt(m_pUrlHandle, CURLOPT_NOBODY, 1);if (curl_easy_perform(m_pUrlHandle) == CURLE_OK) {    curl_easy_getinfo(m_pUrlHandle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dSize);} else {    dSize = 0.0f;}

curl_easy_cleanup(m_pUrlHandle);m_pUrlHandle = NULL;

改动就是去掉curl_easy_setopt(m_pUrlHandle, CURLOPT_HEADER, 1);

默认CURLOPT_NOPROGRESS为开启的

CURLOPT_NOSIGNAL我也设置过,没用。CURLOPT_HEADER如果打开,它会将头信息输出在body中,会不会是因为没有设置CURLOPT_WRITEFUNCTION函数引起的问题呢?

仔细查curl的官方文档http://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html,有这样的发现:

也就是如果没有设置CURLOPT_WRITEFUNCTION,那它会调用默认的fwrite方法,那它的路径会是什么呢?不清楚,上面也没写,所以就有可能导致写入失败,从而导致得到的size始终为0

libcurl断点下载遇到的问题相关推荐

  1. iOS网络-NSURLSessionDataTask大文件离线断点下载

    什么叫离线断点下载,就是用户下载中关闭程序重新打开可以继续下载 代码实现如下: #import "ViewController.h" @interface ViewControll ...

  2. 使用NSURLConnection实现大文件断点下载

    使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下 ...

  3. Android多线程断点下载

    到华为后,信息管理特别严格,文件不能外发.所以好久都没写博客了,今天周日,老婆非要我学习.就闲来无事,写一篇博客,呵呵-- 前段时间,项目中提到了断点下载apk并静默安装的需求.本打算用应用市场成熟的 ...

  4. iOS开发网络篇—多线程断点下载

    iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...

  5. 一行代码快速搞定Flowable断点下载(下)

    一行代码快速搞定Flowable断点下载(下) 其实这个主题对应的三篇文章真的真的非常难写,首先是感觉非常多人对于函数式编程不太熟悉,然后又有一些人对于kotlin不太熟悉.这就导致了,写这三篇文章的 ...

  6. 一行代码快速搞定Flowable断点下载(中)

    一行代码快速搞定Flowable断点下载(中) 感觉上一篇家常聊了太多,这一篇就直接进入正题,首先来看一下,通过存储化以及方法拓展技术将mComposableDisposable的相关逻辑也从抽象Ac ...

  7. 一行代码快速搞定Flowable断点下载(上)

    一行代码快速搞定Flowable断点下载(上) 之前我们大致讲了讲,到底怎么完全将disposable相关代码完全隐藏. 然后到了这里,可能有些杠精就会说了,你那个方式,我们不是完全不能拿到Flowa ...

  8. Java多线程断点下载

    多线程下载已经提高了下载的效率,但是当一些特殊情况发生的时候,我们需要对程序进行处理,这样效率会更高.比如,断电断网等造成下载中断,那么我们下一次又要重新开始下载,这样效率底下,所以我们可以考虑使用断 ...

  9. C#实现http断点下载

    我们寄希望于万能的解决方案,但是现实的情况总是很糟糕.在软件编程的世界中,技术分散的情况尤为严重,且不说各种语言拥有的优势不能融合,单就一门语言而言,就拥有众多的技术和相关技术需要学习.网络编程就是这 ...

最新文章

  1. WISEGATE:SIEM的最佳实践讨论
  2. Consul入门05 - 健康检测
  3. Attention的本质:从Encoder-Decoder(Seq2Seq)理解
  4. 编写函数,模拟内置函数 sorted()。
  5. 如何设置游戏分辨率(C++)
  6. 无代码iVX编程实现简单魂斗罗
  7. mysql主键和聚簇索引_[MySQL] innoDB引擎的主键与聚簇索引
  8. 复制带随机节点的链表
  9. java set排序_Java Set排序的方法
  10. 计算机文档用什么翻译,Word文档翻译在哪里(适于Word2010-Word2016)?
  11. Swift - 项目部署配置(支持的系统,设备和状态条样式等)
  12. python 直线检测_python hough变换检测直线的实现方法
  13. RF接口测试中的重复执行
  14. 提高效率:17款超赞的谷歌chrome浏览器插件、扩展程序
  15. java手机验证码注册_Java手机验证码注册
  16. Windows Server 无法启用 网络发现
  17. clustalw序列比对_COBALT:NCBI在线蛋白多序列比对(比ClustalW还强大的工具)
  18. 18771:奶牛的草(multimap)
  19. 方根法公式_(完整word版)层次分析法中用方根法计算权重在Excel中的具体操作
  20. 由于无法验证发布者 所以windows阻止此软件

热门文章

  1. Windows PowerShell 2.0语言之字面类型系统
  2. Linux 指令篇:文件系统--fstab
  3. 《Unity 游戏案例开发大全》一6.5 游戏主场景
  4. 一文读懂卷积神经网络
  5. 【SSRS】入门篇(二) -- 建立数据源
  6. 动软代码生成V2.74模版简介
  7. [leetcode]Surrounded Regions @ Python
  8. Citrix Synergy 2014 重要信息快速一览
  9. (转)C语言位运算详解
  10. c#技巧教程(连载)