Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kryonet-缓冲区溢出-发送小对象_Java_Kryo_Kryonet - Fatal编程技术网

Java Kryonet-缓冲区溢出-发送小对象

Java Kryonet-缓冲区溢出-发送小对象,java,kryo,kryonet,Java,Kryo,Kryonet,你好。在本地主机上,一切都正常运行。现在,服务器设置在专业主机上。错误总是相同的: 10-04 16:35:29.974 5730-5830/com.drkmns.gameloopballs E/AndroidRuntime: FATAL EXCEPTION: Thread-8160 10-04 16:35:29.974 5730-5830/com.drkmns.gameloopballs E/AndroidRuntime: Process: com.drkmns.gameloopballs

你好。在本地主机上,一切都正常运行。现在,服务器设置在专业主机上。错误总是相同的:

10-04 16:35:29.974 5730-5830/com.drkmns.gameloopballs E/AndroidRuntime:   FATAL EXCEPTION: Thread-8160
10-04 16:35:29.974 5730-5830/com.drkmns.gameloopballs E/AndroidRuntime: Process: com.drkmns.gameloopballs, PID: 5730
10-04 16:35:29.974 5730-5830/com.drkmns.gameloopballs E/AndroidRuntime: com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 9
代码很简单:

  String host = ui.inputHost();
    try {
        client.connect(5000, host, Network.port);
        // Server communication after connection can go here, or in Listener#connected().
    } catch (IOException ex) {
        ex.printStackTrace();
    }

    name = "MOJANAZWA";
    Login login = new Login();
    login.name = name;
    client.sendTCP(login);
    TestPacket test = new TestPacket();
    while (true) {

        test.msg = "33333333333333";
        client.sendTCP(test);
    }
TestPacket类只有一个字符串。当我通过模拟器连接时,一切正常。当我在三星Galaxy S4上打开它时,它抛出了这个异常

已经尝试在服务器和客户端的构造函数中增加缓冲区,但没有成功


有什么想法吗?

我不知道这怎么可能——也许有人可以解释——但让线程睡上1毫秒没问题

while (true) {

        test.msg = "55555444444444444444444444444444444444444444444444444444444444444455";
        client.sendTCP(test);
        synchronized (client) {
            try {
                client.wait(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

大概是额外的时间让客户端有机会读取数据,从而将其从缓冲区中删除?在您的情况下,我不知道,但这种“技术”允许指出下面的NullPointerException,我更正了它,不需要在最终代码中等待