lua用socket通信的问题,如何操作二进制数组(3.5的版本)

从AS转cocos开发,cocos相对与AS傻瓜式的API和大量的资料相比,对遇到问题的新手真是有点绝望.我们项目要做socket通信,cosos-lua的示例里没有socket的,网上找了很多资料,看到可以直接使用local socket = require “socket”,就能发起连接和监听事件,可我项目里这样使用却提示找不到"socket.lua"文件,崩溃中…请教了一些老司机后,发现要设置config.lua里的"CC_DISABLE_GLOBAL = true" 改成"CC_DISABLE_GLOBAL = false"
就可以正常运行了.为什么?搞不懂…好不容易可以连服务器了,后台要求用google的protocol协议.这个没有lua版本的,需要做tolua绑定,尝试了很久,最后找到maomaolong写的文章终于搞定,参考:http://forum.cocos.com/t/quick3-3-pbc-windows/26942/7.到最后一步了socket要发数据必须恶化后台约定好格式,比如要先new一个二进制数组,然后write长度,cmd,body等,但二进制操作有遇到问题了,好像lua不能直接操作二进制数据,网站找了很多资料,没有解决,后来找到zrong大大的"ByteArray.lua"类,这一行require(“pack”)又报错了,不知道是c还是c++的文件,各位大侠知道的麻烦指教一下

自己顶一下,已经解决了,希望对各位有帮助zrong大大的"ByteArray.lua"类:
http://zengrong.net/post/1968.htm

关于lua扩展库lpack的使用指南:
http://www.bubuko.com/infodetail-679867.html

要下载ipack库:
http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.1/lpack.tar.gz

ipack.c文件要改一下.

31:#include ctype.h
32:#include string.h

在上面这代码下面插入以下代码,制定按C编译

ifdef __cplusplus

extern “C” {

endif

在最后加上一下代码

ifdef __cplusplus

}

endif

里面有几行类型报错的
59: char a=p;
179: luaL_addlstring(&b,(void)&a,sizeof(a));
190: luaL_addlstring(&b,(void*)&ll,sizeof(ll));

改成下面的:

59: char a= (char)p;
179: luaL_addlstring(&b,(const char*)&a,sizeof(a));
190: luaL_addlstring(&b,const char*)&ll,sizeof(ll));

如果有错误的勿喷啊,希望能帮助到某些人,cocos的资料太少,互相学习

1赞

有个quick社区版,已经帮你集成了很多实用的东西,
当然爱折腾的也可以自己集成。

底层通讯用c++去写,然后发送消息给lua层去调用

可以用 ByteArray处理二进制数组