我正在创建一个多人游戏,不知道如何分离数据包数据。
我的数据包结构如下(它是一个字符串):id(分隔符)内容
内容有时也有多个分隔符(在一个数据包中发送更多数据)
但是如果我的游戏有聊天(或任何其他用户输入),用户可以键入分隔符字符串并中断服务器。我该如何防止这种情况?
是否还有其他比PrintWriter更安全的方式将网络数据发送到套接字输出流?
答案 0 :(得分:1)
有3个解决方案:
0
结尾(值为0的字节) - 这不是字符,因此您可以告诉字符串何时结束,因为它读取的内容为Alec0
其中0
是字面0
而不是字母。因为它没有映射到一个字母,你知道它结束了字符串。你可以使用同样的东西0
开始数据(这适用于流)然后您可以处理0msg0other
,因为g
必须是message
的最后一个{1}}因为0
启动了新的数据输入。然后流结束,所以最后一位必须是other
0x1
0x4
Alec
表示
Alec