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

cocos2d-x 开发网络游戏(http postsocket)

最近开发一个手机版的多人在线游戏,和服务器通讯要用到socket长连接和http短连接。刚好这几天有不少人问我这方面的知识。我今天就给大家讲下吧。
 
大家应该知道在cocos2d-x上面使用socket一般有BSDSocket,http一般用curl,但实际用的过程中还是有很多问题。之前也有很多人写过这方面的教程,我就不重复了,我说下我自己在项目中使用的。
 
Socket我使用boost,http请求使用libhttp。
 
socket比较麻烦,先说libhttp吧。
 
一、libhttp的使用方法:

1、首先去网上下载这三个资源文件:curl、jsoncpp、libhttp。
2、下载好后,将他们加到自己的工程libs目录下。


http请求:(这是异步请求)

里面设计到的函数在这几个头文件中
#include "json.h"
#include "Http.h"
 
[cpp] 
Json::Value BYGameApiRequest::gameLogin(const std::string &name,const std::string &psw){ 
 
RequestParam params; 
 
// params就是存放需要post到服务器的数据 
 
// params.addParam("name", name); 
 
// params.addParam("psw",psw); 
 
Response response; 
 
m_request->syncRequest(BY_GAME_API_URL+BYMethod::GAME_LOGIN+"?userId="+name, Request::Post, params, &response); 
 
Json::Value root=NULL; 
 
Json::Reader reader; 
 
// cout << response.getRawData(); 
 
string res=string(response.getRawData(),response.m_rawDataSize); 
 
reader.parse(res.c_str(), root, false); 
 
return root;//这就是服务器返回的json数据格式。 
 


上面的这个方法,就可以实现和服务器的post请求,这个函数一般放在什么地方好呢?

我的建议是,在游戏工程中建立一个单例类GameAPIRequest,这个单例类就负责请求所有的api数据,一般请求的api是有自己公司定义的格式的,所以所有的函数、参数,我建议建立一个Config和Method的配置类,专门宏定义格式给GameAPIRequest使用。

这样服务器修改了格式什么的,只需要在配置类中修改就可以了。
 
二、socket使用方法:www.2cto.com
添加boostframework库到libs,这个需要自己将boost打包成.framework


作者:yanghuiliu


from:http://www.2cto.com/kf/201207/142192.html

相关文章:

  • cocos2d-x 通过JNI实现c/c++和Android的java层函数互调
  • cocos2d-x 控制android硬件音量大小调节按钮
  • c++ 判断字符串只包含字母、数字、汉字
  • APP STORE 付费验证(IAP)服务端验证全过程
  • 浅谈MVC模式在游戏开发的应用
  • android广告赚钱[转]
  • 关于苹果PUSH(APNS)机制的那点事
  • .net的socket示例
  • Xcode添加百度移动统计报错处理
  • Java在Web开发语言上败给了PHP
  • Java实现简单的Socket服务器与客户端字符串通讯(适合初学者阅读)
  • 我的阅读编程书籍的好方法
  • 使用WampServer在本地玩转WordPress
  • 苹果不允许 iOS 应用内置购买(IAP)使用第三方支付方式,那么跨平台的支付怎么解决这个问题?
  • 判断NSString中是否包含空格
  • eclipse(luna)创建web工程
  • javascript 总结(常用工具类的封装)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript类型识别
  • Laravel 中的一个后期静态绑定
  • Median of Two Sorted Arrays
  • mockjs让前端开发独立于后端
  • PHP 小技巧
  • Python学习之路16-使用API
  • QQ浏览器x5内核的兼容性问题
  • 不上全站https的网站你们就等着被恶心死吧
  • 回流、重绘及其优化
  • 京东美团研发面经
  • 聊聊flink的BlobWriter
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 数据科学 第 3 章 11 字符串处理
  • 一天一个设计模式之JS实现——适配器模式
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云ACE认证之理解CDN技术
  • 第二十章:异步和文件I/O.(二十三)
  • ​比特币大跌的 2 个原因
  • #pragma once与条件编译
  • (1)Android开发优化---------UI优化
  • (2)nginx 安装、启停
  • (39)STM32——FLASH闪存
  • (C语言)球球大作战
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (五)网络优化与超参数选择--九五小庞
  • (转)c++ std::pair 与 std::make
  • **python多态
  • .CSS-hover 的解释
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net mvc总结
  • .Net Web窗口页属性
  • @JoinTable会自动删除关联表的数据