(原创) cocos2dx使用Curl连接网络(客户端)
0. 环境:
winxpsp3, vs2010, cocos2dx@2.1.4
1. 新建一个Helloworld工程
2. HelloworldScene.h里面重写virtual bool ccTouchBegan( cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent );
3. .cpp看代码:
关注点在write_callback() 和 ccTouchBegan()的重写
4. c盘创建个空文件C:\\baidu.html
5. 实现的功能就是点一下屏幕发出一次http get request, 然后在指定的文件里面填充上服务器返回的网页.
#include "HelloWorldScene.h"
#include "cocos-ext.h"
#include "curl\curl.h"
#include <string> using namespace std; USING_NS_CC;
USING_NS_CC_EXT; ////////////////////////////////////
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create(); // 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create(); // add layer as a child to scene
scene->addChild(layer); // return the scene
return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
} pLabel = CCLabelTTF::create("Hello World", "airal", );
CCSize size = CCDirector::sharedDirector()->getWinSize();
pLabel->setPosition( ccp(size.width / , size.height - ) );
this->addChild(pLabel, ); setTouchMode(kCCTouchesOneByOne);
setTouchEnabled(true);
return true;
} void HelloWorld::menuCloseCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit();
#endif
} size_t write_callback(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
} bool HelloWorld::ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent )
{
CCLog("go into ccTouchBegan");
CURL *curl;
CURLcode res;
char buffer[]; curl = curl_easy_init();
if (curl)
{
FILE *outfile;
outfile = fopen("C:\\baidu.html", "wb"); //curl_easy_setopt(curl, CURLOPT_URL, "blog.csdn.net");
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8080/wuziqi?name=1715"); if(outfile)
{
//指定写入的文件指针。
curl_easy_setopt(curl, CURLOPT_FILE, outfile);
} //设置写数据的回调函数。
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl); fclose(outfile); if (res == )
{
pLabel->setString("0 response");
}
else
{
sprintf(buffer,"code: %i",res);
pLabel->setString(buffer);
}
}
else
{
pLabel->setString("no curl");
} /////////////////////////////////////////////////////////// return true;
} /*size_t HelloWorld::funcCallback( void* ptr,size_t size,size_t number,void *stream )
{
CCString* a = CCString::createWithFormat("%s",ptr);
this->pLabel->setString(a->getCString());
CCLog(a->getCString());
CCLog("go into writehtml");
return size*number;//这里一定要返回实际返回的字节数
}*/
(原创) cocos2dx使用Curl连接网络(客户端)的更多相关文章
- httpUrlConnection连接网络的用法(用到了handle传递消息,在主线程中更新UI)
由于httpclient在Android5.0以后已经过时,所以官方推荐使用httpUrlConnection来连接网络,现将该连接的基本方法展示,如下 注意:记得加入<uses-permiss ...
- VMware中解决ubuntu不能连接网络问题。(亲测有效)
1.保证自己的电脑能正常连接网络 2.打开关于VMware的所有服务(一般情况服务设置的是手动启动,需要自己打开)如图: 3.对VMware虚拟机进行网络设置:右击ubuntn选择设置 4.选择网络适 ...
- 在Android开发中如何判读当前设备是否连接网络
1:前言: 我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了, 如果是有网络的话,那么此时就去向远程服务器去拿数据, ...
- Js navigator.onLine 获取设备是否可以上网、连接网络
http://zccst.iteye.com/blog/2194229 获取用户的联网状态 if (navigator && navigator.onLine === false) { ...
- 怎样用C#代码知道是否已连接网络
有时,上传数据和下载数据都需要用到网络,但是不知道程序是否已连接到网络,下面是简单测试是否已连接网络的小功能 1.在winform窗体上添加一个按钮和多选框
- IOS(SystemConfiguration)框架中关于测试连接网络状态相关方法
1. 在SystemConfiguration.famework中提供和联网相关的function, 可用来检查网络连接状态. 2. SC(SystemConfiguration)框架中关于测试连接网 ...
- 如何让centos6.5在vm11里上网,连接网络?
如何让centos在vm里连接网络?步骤有3,方可解决: 1.配置vm的虚拟网络编辑器 2.配置虚拟机centos 3.设置centos的ip地址 一.配置vm的虚拟网络编辑器
- Xcode7连接网络设置
XCode7连接互联网的时候需要再info.plist设置(之前版本都不需要)连接网络NSAppTransportSecurity 字典NSAllowsArbitraryLoads 布尔 Y ...
- android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问
谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...
随机推荐
- log4net 配置应用
(一). WinForm 或者 WPF 中的配置和应用 <?xml version="1.0" encoding="utf-8" ?> <co ...
- oracle结构与安全
从宏观上来看:oracle数据库服务器主要有数据库和实例组成. 在orale数据库服务器中,首先会产生一个实例,通过实例访问一个数据库. 一个实例对应着一个数据库. oracle 数据库在逻辑上是按层 ...
- mapminmax的用法详解 _MATLAB
============外一篇 有关mapminmax的用法详解 by faruto==================================转自:http://www.ilovematla ...
- js 检查是否为手机端
let isMobile = function(){ let userAgentInfo = navigator.userAgent; let Agents = new Array("And ...
- 四则运算之C++实现篇
对四则运算的一些要求如下: 1.题目避免重复:2.可定制(数量/打印方式):3.可以控制下列参数: 是否有乘除法.数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …): 一 ...
- Java碎片知识(笔记)
1.在java中有goto,但这只是保留字,并不能使用(const也是).在eclipse中的报错信息为”Syntax error on token "goto", throw e ...
- js中的回调函数的理解和使用方法
js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...
- 常用的不熟的sql语句
1.select * from dbo.Consum_AccountPaymentLog Where CHARINDEX(',1,',','+RelatedUserIDs+',')>0 char ...
- openfire二次开发eclipse环境搭建
转自:http://blog.csdn.net/daigua245/article/details/7918243 1.将openfire源码项目解压到(如果是从SVN CO下来的则不用)eclips ...
- Struts2 框架下 session 读出来为null
我用的strust2框架,开始的时候这么写的: 在 登陆函数中(注释部分): public String dealerLogin(){ EntityInfo entityinfo=dea ...