cocos2dx 3.3rc0 踩坑日记(一)------ 弱联网 Curl

这两天看了视频学习了下弱联网技术,用的是Curl,具体使用方法我就多说了,可以参考官方样例和下面的文章,解释的很清楚。

【Curl (libcurl) 开发 之一】Cocos2dx之libcurl(curl_easy)的编程教程(帮助手册)!

CURL使用2

我要说的我又踩到一个坑。。。为什么是又呢。。。天生就是来踩坑的。。。

先说下使用之前需要加入curl.h的路径$(EngineRoot)external\curl\include\win32和链接库libcurl_imp.lib

如图所示:

下面来说下我踩到坑,有两个!!!!

第一个是我修改样例curl_easy_setopt(curl, CURLOPT_URL, "www.baidu.com"); 居然请求失败!失败!。。。。我就蛋疼了。。。和视频里的一样为什么失败呢。。。

后来改成curl_easy_setopt(curl, CURLOPT_URL, "baidu.com");就可以请求成功了。。。不要问为什么,我也不知道。。。我去看了cocos2dx以前版本是这样写的。。。可能还有朋友看见看见类似的代码curl_easy_setopt(curl, CURLOPT_URL, "http//:baidu.com");两种写法都可以,http//:可有可无!

第二个坑就是回调函数!!!!!!!

回调函数如下:

size_t HelloWorld::write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
	log("%s", (char*)buffer);

	return size; 
}

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HelloWorld::write_data);设置好回调函数就会在执行curl_easy_perform(curl)自动调用了。

又是和视频里一样。。。还是请求失败,返回了一个数23!!!去查了资料看看表示什么意思。

CURLE_WRITE_ERROR (23) – 在向本地文件写入所收到的数据时发生错误,或由写入回调 (write callback) 向 libcurl 返回了一个错误。

原来必须要回调函数返回它所得到数据的大小。如果返回的数据大小与传递给它数据大小不一致,libcurl将会终止操作,并返回一个错误代码。

size_t HelloWorld::write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
	log("%s", (char*)buffer);

	return size * nmemb; //这里一定要返回实际返回的字节数
}

代码改成size * nmemb就可以了,nmemb表示模块的大小,一个表示模块数!!!

视频坑啊。。。纠结死我了,还好最终解决了!

Cocos2dx对Curl进行封装,提供了CCHttpClient类,推荐大家都使用CCHttpClient类,CCHttpClient是异步的。而Curl写异步还需要自己写。。。我们还是不要重复造轮子了!

就写这么多,期待下篇文章!

如有不足之处,请大家指出,一起交流成长!

时间: 2024-10-23 08:17:05

cocos2dx 3.3rc0 踩坑日记(一)------ 弱联网 Curl的相关文章

cocos2dx 3.3rc0 踩坑日记(二)------ HttpClient 的使用

昨天写了Curl的简单使用,遇见了几个坑,今天用HttpClient写样例还是遇见了坑~ 按照网上的资料写总是遇见问题...应该是版本不一样!!!下面我来说说HttpClient的使用方法. 首先要引入头文件和命名空间 #include "network/HttpClient.h" using namespace cocos2d::network; 但是这样还不行,编译的话会报错,无法解析的外部符号....... 出现这个需要添加network库,添加库的方式和以前有点不同.3.x有些

quick cocos2dx 3.3rc1 踩坑日记(二)------ 声音引擎

昨天在群里有人说setSoundsVolume和setMusicVolume设置声音大小无效...我记得cocos2dx是没实现内容的,就贸贸然回答说,是这你的没用,但群里有人说是有用的,我就去虚心请教,大神人很好,回答了我很多问题,告诉我说实现了,而且是针对不同的平台.实现的文件位置,如下图: 我先测试setMusicVolume,在win32下setMusicVolume是无效的,在Android上是可以的. 但在测试setSoundsVolume时,就遇见问题了,当调用audio.play

SpringBoot踩坑日记-定时任务不定时了?

问题描述br/>springboot定时任务用起来大家应该都会用,加两注解,加点配置就可以运行.但是如果仅仅处在应用层面的话,有很多内在的问题开发中可能难以察觉.话不多说,我先用一种极度夸张的手法,描述一下遇到的一个问题.@Componentpublic class ScheduleTest {@Scheduled(initialDelay = 1000,fixedRate = 2*1000)public void test_a(){System.out.println("123"

米忽悠踩坑日记-1

米忽悠踩坑日记-1            --知不足,而后进 进入米哈游差不多一个半月了,就以刚刚上线的某个任务作为节点写一篇踩坑日记吧. 1.安全意识,尽量考虑到玩家各种奇奇怪怪的操作以及有可能想刷道具的行为. 2.日志方面,记录玩家的每一步操作,成功或者失败,需要记录清楚,uid,region以及其他的信息,如奖励的ID,更新一次游戏玩家数据也记录 3.在写代码时候不要总想着先实现逻辑再来优化结构,因为一个小任务的代码量不一定少,而且任务排的很紧,如果不从一开始就保持良好的结构自己看起来简直

vue 组件传值踩坑日记 1

今天在用平时很少用到的传值方式,是V2.4以后新加入属性$attrs $listener 以及inheritAttrs. 总结:这样形式的代码适合套娃模式的组件传递,却不适合兄弟组件的传值,那样的传值方式,需要创建一个事件总线,说白了就是新new一个空的vue,详见,我的第二篇日志<vue 组件传值踩坑日记 2> 废话不多说,直接上代码,大家可以边看注释边测试一下效果吧 <!DOCTYPE html> <html lang="en"> <hea

AI相关 TensorFlow -卷积神经网络 踩坑日记之一

上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是google开源出来的人工智能库,由python语言写的 官网地址:http://www.tensorflow.org/   请用科学上网访问 中文地址:http://www.tensorfly.cn/ 当然还有其他AI库,不过大多数都是由python 写的 .net 的AI库叫 Accord.net

人工智能(AI)库TensorFlow 踩坑日记之二

上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models   这个库里面主要是一些常用的模型用tensorflow实现之后的代码.其中我用的是 models/tree/master/tutorials/image/cifar10 这个示例,上一篇也大致讲过了. 关于上次遇到问题是: 虽然训练了很多次,但是每次实际去用时都是相同的结果.这个问题主要原因是

quick-cocos2d-x 踩坑日记(一)------ NodeEx 与 shortcodes

今天在模仿一个demo,想自己去完善一些功能,自己写的时候就遇见了一个坑...先看代码: local label = cc.ui.UILabel.new({     UILabelType = 1,     text = "Max Score 10",     font = "fonts/font-issue1343.fnt",     x = boardSize.width / 2,     y = boardSize.height * 0.4,     }):a

cocos creator踩坑日记(持续更新中...)

踩坑一 问题:项目在构建成Web Mobile后运行在浏览器和微信中,点击页面任何地方都会导致自动全屏 解决:在构建之后的main.js中,去掉 cc.view.enableAutoFullScreen(true) 踩坑二 问题:精灵使用move to后路径上会留下一些线条 原因:脏矩形出问题了 解决: Canvas模式下才有脏矩形,使用这个方法之前要判断 if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) { cc.renderer.enabl