Lua中如何解析通信中的结构体?求指点!!

游戏服务端是用C++写的,C/S的通信格式是使用struct来定义数据格式的。有没有什么方法可以直接在LUA中构建一个Struct与服务端进行通信,以及获取到服务端返回的数据后,转换成对应的table;而不是通过LuaBinding进行struct的绑定,因为通讯接口较多,struct定义也会比较多,而且如果修改了通讯接口,还得重新编译so. 这样做的话,LUA和C++的耦合度也会增加,想纯粹使用LUA进行客户端的开发。望大神们指点!!谢谢!!

目测protocol buffer可以满足你的需求,百度一下吧,资料很多

可以使用ByteArray进行读写结构体数据,参考quick版本中廖大写的ByteArray
或者用我写的这个C++版本的ByteArray,在c++中写入数据,在lua中读取即可,你可以参考下:
http://blog.csdn.net/xunmengdqingmao/article/details/50761027
API参考:
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html
github地址:
https://github.com/jiutian-mao/ByteArray
参考用法:
local len = 1024–自定义buffer数据长度
local ba = jt.ByteArray:create(len)
ba:writeInt(1000)
ba:writeShort(123)
ba:writeString(“str”)
–写入数组
for i=1,8 do
ba:writeLongLong(i)
end

print(“postion-1:”,ba:getPosition())
–将读写点指向0开始处
ba:setPosition(0)
–按顺序读取输出
print(ba:readInt())
print(ba:readShort())
print(ba:readString(3))
–读取数组
for i=1,8 do
print(ba:readLongLong())
end
print(“postion-2:”,ba:getPosition())
print(“check:”,ba:getBytesAvailable())–输出0正常,<0访问越界,>0未全部读取