cocos2d-x 网络编程一(cURL初级使用)

最近打算做个网络项目,所以开始学习网络这块,不过自己的基础和理解力太差了,很多东西感觉太抽象……学一点是一点吧,能做出来就行……

通过查阅大虾们写的博客,知道了cocos2d-x里同样可以用两类网络通信方式:http和socket,http的主要用的是cURL,socket看上去要高端一些,用于更复杂的网络交互。所以先从cURL开始学起吧……

思考了下,感觉cURL用来制作游戏的话主要是用在简单类游戏,利用客户端发送的url链接,可以将变量发送到动态网页如php,借由php根据传送过来的变量做出对应处理后返回数据给客户端,再由客户端通过自定义的解析拿到对应返回数据(因为返回的数据都是http数据,所以要自己解析出返回数据中需要的信息),从而达到网络数据交互。

下面是通过修改官方原例curl test中代码,获取百度网页源代码的例子:

//这是链接数据返回时调用的数据接收回调函数
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);
//这里设置的是当链接发生错误时终止运行
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
//设置链接超时
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);

上面的代码是在链接时根据需要来进行设置的,第一行是用来显示http链接请求后接收到返回数据时的回调函数,在例子中是用来显示打印出了返回的数据内容:

.h文件中在主层里先声明这段:

static size_t HttpWriteString(uint8_t* ptr,size_t size,size_t nmemb,void *stream);

然后是cpp中的对应代码:

size_t CurlTest::HttpWriteString(uint8_t* ptr,size_t size,size_t number,void *stream)  
{  
  
    CCLog("%s",ptr);  
    return size*number;//这里一定要返回实际返回的字节数  
}

其实回调函数的具体参数还没研究过,只是先试练下……需要了解的就只好自己看文档资料了……

上面设置好以后,官方原例中的代码是这样的:

    CURL *curl;
    CURLcode res;
    char buffer[10];

//初始化
    curl = curl_easy_init();
//初始化OK后执行下面的代码
    if (curl) 
    {
//这是上面说过的代码
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
//设置http链接到百度首页
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");

//执行链接后会返回一个curlCode,这个code有很多参数,0或者CURLE_OK表示链接成功,其它的就只好自己查阅了
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
        if (res == CURLE_OK)
        {
            m_pLabel->setString("0 response");

        }
        else
        {
            sprintf(buffer,"code: %i",res);
            m_pLabel->setString(buffer);
        }
    } 
    else 
    {
        m_pLabel->setString("no curl");
    } 

改好后再运行官方的testCPP,如果网络正常的话,就能看到输出栏里会显示出返回的百度首页的网页源代码。通过curl_easy_setopt 可以设置很多链接参数,包括get/post提交数据,链接时的验证信息,cookies等等,这个还真得慢慢研究了……回头做个网络登录界面看看!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值