【发布时间】:2017-01-14 09:40:04
【问题描述】:
我正在编写多人游戏,但我很难处理 udp 数据包的大小。我想通过 udp 数据包发送多个敌人的统计数据(hp、位置、id)。这是重要的代码部分:
Byte[] datagramPacketData = ("11" + String.valueOf(entityAmount) + "," + gamename + "," + username + entitiesToBeSent).getBytes();
如您所见,我将所有数据合并为一个字符串,然后在发送之前将其转换为 byte[]。但是 chars 比 little ints(用于 id 和 position)和 longs(hp) 消耗更多的字节。 例如:一个暴徒有 2.000.000 hp。该数字将消耗 7 个字符(=7 个字节),但它只需要 4 个字节。如何在不使用对象流的情况下通过使用更少的字节来发送所有这些数据?
我会很高兴有一些建议! 非常感谢您。
【问题讨论】:
-
将每个单独的块转换为字节,而不是将它们转换为字符串,然后一次全部转换为字节?
-
那你如何在接收端解析它们呢?我的意思是,我怎么知道哪个字节是什么。因为我只会收到一个 byte[] 网格
-
您可以做几件事。您可以制作一个标准长度的数据包,以便字节数组中的位置范围始终对应于某些变量,或者您可以将字节附加到数组中,告诉您每个变量的开始位置等。
-
啊好主意! :) 我认为我坚持你的第一个建议。非常感谢,我想我现在可以解决这个问题了:)保重朋友!