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连接网络(客户端)的更多相关文章

  1. httpUrlConnection连接网络的用法(用到了handle传递消息,在主线程中更新UI)

    由于httpclient在Android5.0以后已经过时,所以官方推荐使用httpUrlConnection来连接网络,现将该连接的基本方法展示,如下 注意:记得加入<uses-permiss ...

  2. VMware中解决ubuntu不能连接网络问题。(亲测有效)

    1.保证自己的电脑能正常连接网络 2.打开关于VMware的所有服务(一般情况服务设置的是手动启动,需要自己打开)如图: 3.对VMware虚拟机进行网络设置:右击ubuntn选择设置 4.选择网络适 ...

  3. 在Android开发中如何判读当前设备是否连接网络

    1:前言: 我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了, 如果是有网络的话,那么此时就去向远程服务器去拿数据, ...

  4. Js navigator.onLine 获取设备是否可以上网、连接网络

    http://zccst.iteye.com/blog/2194229 获取用户的联网状态 if (navigator && navigator.onLine === false) { ...

  5. 怎样用C#代码知道是否已连接网络

    有时,上传数据和下载数据都需要用到网络,但是不知道程序是否已连接到网络,下面是简单测试是否已连接网络的小功能 1.在winform窗体上添加一个按钮和多选框

  6. IOS(SystemConfiguration)框架中关于测试连接网络状态相关方法

    1. 在SystemConfiguration.famework中提供和联网相关的function, 可用来检查网络连接状态. 2. SC(SystemConfiguration)框架中关于测试连接网 ...

  7. 如何让centos6.5在vm11里上网,连接网络?

    如何让centos在vm里连接网络?步骤有3,方可解决: 1.配置vm的虚拟网络编辑器 2.配置虚拟机centos 3.设置centos的ip地址 一.配置vm的虚拟网络编辑器

  8. Xcode7连接网络设置

    XCode7连接互联网的时候需要再info.plist设置(之前版本都不需要)连接网络NSAppTransportSecurity  字典NSAllowsArbitraryLoads    布尔  Y ...

  9. android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问

    谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...

随机推荐

  1. 开启ACM的征途

    ACM对我的诱惑实在是太大了.以前从没有任何一件事情让我在假期也这么热血沸腾过,甚至是高考,也从没有过. 我对ACM的目标从没变过,我要拿金牌,我要进WF! 尽管我现在才刚刚开始ACM之旅,尽管我现在 ...

  2. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  3. 在strut.xml 中使用ognl

    在struts.xml 中使用ognl有两种方面的需求: 1. 在action执行时从struts.xml中读取param标签中的值,然后调用标签name属性相应的set方法对action中的变量赋值 ...

  4. Matlab里面的SVM

    支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题. 构造出 ...

  5. Apache Spark技术实战之4 -- 利用Spark将json文件导入Cassandra

    欢迎转载,转载请注明出处. 概要 本文简要介绍如何使用spark-cassandra-connector将json文件导入到cassandra数据库,这是一个使用spark的综合性示例. 前提条件 假 ...

  6. linux命令学习(1):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  7. 定时调度模块:sched

    """A generally useful event scheduler class. 事件调度器类 Each instance of this class manag ...

  8. embedded tomcat context.xml

    在网络下载相关的embedded tomcat jar.也可直接在maven中检索. 在main方法中,输入以下代码: //新建tomcat实例 Tomcat tomcat = new Tomcat( ...

  9. C#7.0中有新特性

    以下将是 C# 7.0 中所有计划的语言特性的描述.随着 Visual Studio “15” Preview 4 版本的发布,这些特性中的大部分将活跃起来.现在是时候来展示这些特性,你也告诉借此告诉 ...

  10. jqGrid通用编辑规则

    一个将数据显示在grid中主要的原因是为了快速容易的编辑它,jqGrid支持3种编辑方法 jqGrid单元格编辑配置,事件及方法::编辑表格中的单元格 jqGrid行编辑配置:同时编辑一行中的多个单元 ...