(原创) 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秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...
随机推荐
- JCreator的配置
1.在Configure(配置)菜单上选择Options(选项),将弹出对话框. 2.在Option对话框中选择左侧JDK Profile,选择右侧JDK version 1.x.x.. ,点击Edi ...
- IP地址的分类与寻址
IP地址:有一种标识符,被TCP/IP协议簇的IP层用来标识 连接到因特网的设备.IP协议的第4版IPv4地址是32位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
- PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
PHP版本VC6与VC9.Thread Safe与None-Thread Safe等的区别 [摘要]PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,在PHP发 ...
- IOS第九天(3:QQ聊天界面通知的使用)
#import <Foundation/Foundation.h> #import "Person.h" #import "XQCompany.h" ...
- Java与C++面向对象不同点
首先面向对象的语言有哪些?JAVA.C++.C#等等.但是呢很多人认为C#和C++有关系,其实一点关系都是没有滴.C#是仿Java做的,很多人都说是假Java,因为C#和Java太像了比如C#也有st ...
- c3p0数据库连接池死锁问题
项目进行压力测试的时候,运行大概1小时候,后台抛出以下异常: Nov 9, 2012 1:41:59 AM com.mchange.v2.async.ThreadPoolAsynchronousRun ...
- DS实验题 PlayGame Kruskal(UnionFindSet)
题目: 思路: 有两种做法,一种是Prim算法,另外一种则是我所使用的Kruskal算法,Kruskal的算法实现可以参考:最小生成树-Prim算法和Kruskal算法,讲的已经是十分清楚了. 具体算 ...
- Yii源码阅读笔记(二十四)
Module类中获取子模块,注册子模块,实例化控制器,根据路由运行指定控制器方法的注释: /** * Retrieves the child module of the specified ID. * ...
- nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...
- javaWeb中servlet开发(5)——WEB开发模式:Mode I与Mode II
1.servlet开发 2.model I模式 客户端通过访问JSP,调用里面的javabean,而通过javabean调用处理数据库的操作,javabean中有专门处理数据库的操作,数据库主要以DA ...