【问题标题】:Java KryoNet BufferUnderflowJava KryoNet BufferUnderflow
【发布时间】:2016-04-02 05:05:21
【问题描述】:

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

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

你们对导致这个问题的原因有什么想法吗?

谢谢你,我希望你有一个愉快的假期, - 杰克

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

【问题讨论】:

    标签: java udp buffer kryonet


    【解决方案1】:

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

    这很容易通过在消息中添加一个后缀来解决,像“OK”这样的随机后缀。然后当它被服务器发回时,我会用任何内容替换“OK”。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多