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

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

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

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

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

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //这是链接数据返回时调用的数据接收回调函数  
  2. curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);  
  3. //这里设置的是当链接发生错误时终止运行  
  4. curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);  
  5. //设置链接超时  
  6. curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);  

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

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

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. static size_t HttpWriteString(uint8_t* ptr,size_t size,size_t nmemb,void *stream);  

然后是cpp中的对应代码:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. size_t CurlTest::HttpWriteString(uint8_t* ptr,size_t size,size_t number,void *stream)    
  2. {    
  3.     
  4.     CCLog("%s",ptr);    
  5.     return size*number;//这里一定要返回实际返回的字节数    
  6. }  

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

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

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.     CURL *curl;  
  2.     CURLcode res;  
  3.     char buffer[10];  
  4.   
  5. //初始化  
  6.     curl = curl_easy_init();  
  7. //初始化OK后执行下面的代码  
  8.     if (curl)   
  9.     {  
  10. //这是上面说过的代码  
  11. curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpWriteString);  
  12. curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);  
  13. curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);  
  14. //设置http链接到百度首页  
  15.         curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");  
  16.   
  17. //执行链接后会返回一个curlCode,这个code有很多参数,0或者CURLE_OK表示链接成功,其它的就只好自己查阅了  
  18.         res = curl_easy_perform(curl);  
  19.         /* always cleanup */  
  20.         curl_easy_cleanup(curl);  
  21.         if (res == CURLE_OK)  
  22.         {  
  23.             m_pLabel->setString("0 response");  
  24.   
  25.         }  
  26.         else  
  27.         {  
  28.             sprintf(buffer,"code: %i",res);  
  29.             m_pLabel->setString(buffer);  
  30.         }  
  31.     }   
  32.     else   
  33.     {  
  34.         m_pLabel->setString("no curl");  
  35.     }   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值