首页 > 解决方案 > KryoNet 中的缓冲区溢出试图接收对象图

问题描述

我正在发送一个包含 2X45x45 大 3 维数组的对象。在每个插槽中,都有一个我也在 kryonet 中注册的自定义对象。它似乎发送得很好,但试图接收它我一直收到这个烦人的错误,

线程“客户端”com.esotericsoftware.kryonet.KryoNetException 中的异常:无法读取大于读取缓冲区的对象:com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:118) 的 com.esotericsoftware.kryonet.Client 的 12793。在 java.lang.Thread.run 的 com.esotericsoftware.kryonet.Client.run(Client.java:333) 的更新(Client.java:247)(未知来源)

我不完全确定我为什么得到它,但我尝试通过在它的构造函数中这样做来增加客户端的缓冲区大小,

client = new Client((20 * 1024), 2 * 1024);

不过,它似乎对我没有多大作用。我一直在尝试解决这个问题一段时间,这是我最后的手段。有谁知道发生了什么以及我该如何解决这个问题?

这也是我要发送以供参考的对象,但它确实不重要,因为它似乎发送正常:

public class MapDataPacket {

    public String id;
    public String name;
    public Block[][][] map;

    public MapDataPacket() {

    }

}

标签: networkingkryokryonet

解决方案


这有效:

client = new Client(1000000, 1000000);

推荐阅读