基于quick-cocos2d-x的LuaSocket范例
这是一个 luasocket 范例。
为了便于使用,我封装了 luasocket 到 cc.net.SocketTCP 类中。这个范例展示如何使用 cc.net.SocketTCP 。
同时,在本范例中还使用了 cc.utils.ByteArray 和 cc.utils.ByteArrayVarint 。
要了解更多关于 cc.net.SocketTCP 和 cc.utils.ByteArray 的信息,请阅读 一个LuaSocket封装 和用lua实现ByteArray和ByteArrayVarint .
在本范例的 net 包中,有3个 lua 类:
- net.PacketBuffer
我们收到的数据包经常是不完整的,特别是当数据包比较大的时候。因此我们必须确保数据包完整才能使用。PacketBuffer 就是做这件事的。 - net.Protocol
这个类把数据包解析成人类可读的格式。它转换一个数据包到一个lua table,并且为每个数据项命名。数据项的名称定义在 net.protocols 文件中。 - net.protocols
这是你的协议定义文件。你可以写一个生成器程序来生成它。
下面是本范例运行的log文件。当然,你需要自己实现服务端程序。
[0.2467] [INFO] socket.getTime:1389319197.462940
[0.2472] [INFO] os.gettime:1389319197.000000
[0.2477] [INFO] socket._VERSION: LuaSocket 2.1-rc1
[0.2530] [INFO] Scene "MainScene:onEnter()"
[1.9754] [INFO] socket status: SOCKET_TCP_CONNECTED
[5.8635] send 1000 packet: 86 7B 00 0B 00 00 00 B1 04 00 03 00 08 10 C0 3E 01 01
[5.8859] socket receive raw data: 86 7B 00 60 00 00 00 00 7D 00 0D 00 09 11 18 20 28 30 38 40 48 50 58 60 00 3C 63 73 76 3D 34 38 32 28 30 31 30 39 2E 31 35 33 32 32 38 29 0A 66 73 3D 31 33 31 28 30 31 30 39 2E 31 35 33 31 35 31 29 0A 67 73 3D 33 35 32 28 30 31 30 39 2E 31 38 30 33 32 37 29 04 74 65 73 74 00 14 50 D6 03 96 01 00 00 00 0F 6E 103
[5.8873] start analyzing... buffer len: 103, available: 103
[5.8878] method:2000
[5.8884] before get meta position:11
[5.8897] after get meta position:25
[5.8904] after get body position:104
[5.8909] dump from: [string "d:/cocos2dx/quick/samples/luasocket/scripts/scenes/MainScene.lua"]:54: in function <[string "d:/cocos2dx/quick/samples/luasocket/scripts/scenes/MainScene.lua"]:48>
[5.8921] - "<var>" = {
[5.8924] - "body" = {
[5.8931] - "ap" = 0
[5.8938] - "crystal" = 150
[5.8944] - "dust" = 0
[5.8950] - "gold" = 470
[5.8955] - "goodsMaxNum" = 110
[5.8959] - "goodsNum" = 15
[5.8965] - "lv" = 20
[5.8971] - "mithril" = 0
[5.8975] - "money" = 80
[5.8981] - "flag" = 0
[5.8987] - "name" = "test"
[5.8993] - "sex" = 0
[5.8999] - "ver" = "csv=482(0109.153228)\nfs=131(0109.153151)\ngs=352(0109.180327)"
[5.9008] - }
[5.9013] - "method" = 2000
[5.9019] - "ver" = 0
[5.9025] - }
基于quick-cocos2d-x的LuaSocket范例的更多相关文章
- 【Q2D】如何导出自定义C++类给框架使用
本文基于Quick cocos2d x这个游戏框架,为了行文流畅,后面都简称Q2D 导出自定义c++类给项目使用已经有了现成的例子了 详见:http://quick.cocos.org/?p=235 ...
- 基于 UML 的业务建模举例
简介: 对于管理流程咨询项目.大型信息化建设项目和套装管理软件实施项目,对业务环境的分析和理解对项目的成功至关重要.系统.全面理解 IT 系统所处的业务环境,可以帮助 IT 系统能提供正确系统功能,并 ...
- Quick BI功能篇之(一):20分钟入门
前言: 最近小编帮助隔壁团队一个小姐姐解决了个大难题:给老板汇报业绩分析,频次提高.效率提升,还得保证团队中的小伙伴们都得有点大数据时代的基本数据能力.小编觉得这么好的经验可以分享给更多志同道合的朋友 ...
- Quick BI独创千人千面的行级权限管控机制
摘要 就数据访问权限而言,阿里巴巴以“被动式授权”为主,你需要什么权限就申请什么权限.但是,在客户交流过程中,我们发现绝大多数企业都是集中式授权,尤其是面向个人的行级权限管控,管理复杂度往往呈几何增长 ...
- SaaS系列介绍之十三: SaaS系统体系架构
1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...
- OpenStackCLI调试及术语识记
1,Project are organizational units in the cloud,and are also known as tenants or accounts.Each user ...
- man rsync翻译(rsync命令中文手册)
本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...
- RTKLIB编译及RTCM数据读取样例
1.RTKLIB简介 RTKLIB是全球导航卫星系统GNSS(global navigation satellite system)的标准&精密定位开源程序包,RTKLIB由日本东京海洋大学( ...
- QT QQuickView嵌入到QT MDI中
在学习QT的过程中发现有一个特别炫酷的行星例子“planets”,有两种实现版本: 一种是基于Qt 3D QML(planets-qml),另一种则是基于Quick和强大的Three.js(plane ...
随机推荐
- HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...
- Parameter pack
Parameter pack C++ C++ language Templates A template parameter pack is a template parameter ...
- 关于json对象的删除
摘自:http://xosadan.iteye.com/blog/1100383 关于json对象的删除 一个json对象在后台产生了,但是有些数据可能无效或者不合法,所以需要在前台作些例外处理,比如 ...
- Axure 简单原型设计
简介 Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写. Axure RP是美国 ...
- Appium获取安卓页面toast(java版)
toast是什么?安卓页面上弹出的提示框,这种提示框出现在屏幕上大概3秒左右就会消失.用uiautomatorviewer根本定位不到. 准备环境,Appium版本需要1.6.3以上. 代码 初始化设 ...
- [Functional Programming ADT] Create State ADT Based Reducers (applyTo, Maybe)
The typical Redux Reducer is function that takes in the previous state and an action and uses a swit ...
- [Algorithms] Build a Binary Tree in JavaScript and Several Traversal Algorithms
A binary tree is a tree where each node may only have up to two children. These children are stored ...
- JCheckBox使用示例
// 初始化 JCheckBox chk=new JCheckBox("XXX"); // 选择 chk.setSelected(true); // 判断选择状态 chk.isSe ...
- Lucene Spatial构建地理空间索引
一.Maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- vue - utils.js
exports:导出功能函数或变量 module.exports:默认导出{} ------------------------------------------------------------ ...