0

尝试使用 Corona SDK 创建网络游戏,但在使用 lua 套接字时遇到了一些问题。起初我使用 tcp 和 json 数据,但现在重新制作为 udp 和二进制数据。
如何将自定义结构发送到服务器?
例如,我需要发送操作代码(short)、ID(long)和两个坐标(float)。我可以用 C 或 Java 做到这一点,但不明白如何用 Lua 做到这一点,如何将它写入套接字?

4

2 回答 2

2

如果您想为您的数据坚持二进制表示,则可以使用lpack库(如果您熟悉这些方法,它的工作方式类似于 Perl 打包/解包方法)。另一种选择是将数据打包到/从 C 结构格式中的结构库。

还有多种序列化器;我写Serpent正是为了通过套接字发送 Lua 数据。

无论哪种情况,您最终都会得到一个代表您的(打包)数据的字符串。您只需使用常规发送/接收调用(TCPUDP)发送此字符串。

于 2012-11-18T22:20:19.270 回答
0

在最一般的意义上,你没有。Lua 不是低级语言;它没有办法假装整数或浮点数是一袋位,它可以将其推入管道。

如果您需要发送非文本数据,那么 Lua 可能不是您最好的选择。但是(取决于 Corona 允许您做什么),您可以用 C 语言编写一个函数,该函数接受一些 Lua 值,将它们打包以便发送,并返回一个 Lua 字符串,Lua 可以将其交给 LuaSockets。这个“字符串”将作为字节数组传输,而不是人类可读的字符串。

于 2012-11-18T21:13:25.023 回答