当前位置: 首页 > news >正文

(原创) 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", 34);  
    CCSize size = CCDirector::sharedDirector()->getWinSize();  
    pLabel->setPosition( ccp(size.width / 2, size.height - 20) );  
    this->addChild(pLabel, 1);  
   
   
    setTouchMode(kCCTouchesOneByOne);
    setTouchEnabled(true);
    return true;  
} 


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#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[10];

    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 == 0)
        {
            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;//这里一定要返回实际返回的字节数    
}*/

 

转载于:https://www.cnblogs.com/zhaitao85/p/3625904.html

相关文章:

  • 创造安宁舒适工作日的17个办法
  • 玩转Web之easyui(三)-----easy ui dataGird 重新指定url以获取不同数据源信息
  • Pycharm使用问题# Interpreter设置
  • C#找不到ConfigurationManager类
  • php get post 发送与接收
  • ubuntu卸载qq2012
  • linux 下 eclipse 开发环境的搭建
  • 读书的理由
  • 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
  • 开源数据库连接池proxool
  • win7桌面不能自动刷新
  • thinkphp 路由不支持.(点)的问题
  • nyoj 306 二分+dfs
  • C#的变迁史 - C# 5.0 之并行编程总结篇
  • [翻译] TLMotionEffect 重力感应
  • php的引用
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Android开源项目规范总结
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JavaScript 一些 DOM 的知识点
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • text-decoration与color属性
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vuex 学习笔记 01
  • web标准化(下)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 动态规划入门(以爬楼梯为例)
  • 工作手记之html2canvas使用概述
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微服务入门【系列视频课程】
  • 最简单的无缝轮播
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (¥1011)-(一千零一拾一元整)输出
  • (1)STL算法之遍历容器
  • (39)STM32——FLASH闪存
  • (C#)获取字符编码的类
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (WSI分类)WSI分类文献小综述 2024
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (接口自动化)Python3操作MySQL数据库
  • (算法)Game
  • .dwp和.webpart的区别
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net core使用ef 6
  • .Net FrameWork总结
  • .net Stream篇(六)
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout