繁体   English   中英

Java KryoNet BufferUnderflow

[英]Java KryoNet BufferUnderflow

最新版本的KryoNet出现了一个非常奇怪的问题。 我正在从客户端和服务器发送一个非常简单的数据包,并出现缓冲区下溢异常。 我还有4个其他已注册的数据包,所有这些数据包都可以正常工作。 出现缓冲区下溢问题的数据包具有两个字符串变量,并已通过TCP和UPD进行了测试。 当数据包发送得很快时 ,至少在一秒钟之内两次,就会发生此异常。 考虑到我还有每秒更新60次的其他数据包,这很奇怪。

这个问题与我研究过的其他缓冲区下溢问题非常不同。 此问题不是由发送非常大的数据引起的 ,因为数据包只有两个String变量。 这个问题也不是由applet或其他配置引起的 ,因为我正在将其作为当前使用LibGDX的应用程序来运行。

你们对造成此问题的原因有任何想法吗?

谢谢,希望您度过了一个快乐的假期-杰克

消息来源: https : //github.com/SirTrashyton/SquareContest (我遇到问题的班级是Packet05Chat)

经过几个小时的测试,我找到了解决方案。 事实证明,KryoNet无法区分对象类型。 当我将字符串发送到服务器时,该字符串包含类似于另一个对象的内容,例如IE,整数,字符等,KryoNet会非常奇怪地解析字符串并产生错误。

可以通过在消息中添加后缀来轻松解决此问题,例如“ OK”之类的随机后缀。 然后,当服务器将其发送回时,我将用任何内容替换“ OK”。

希望这对遇到此错误的其他人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM