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, 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 состоит только из одной строки. При подключении через эмулятор все работает нормально. Когда я открываю его на Samsung Galaxy S4, он выдает это исключение.

Уже пробовал увеличивать буфер в конструкторах Сервера и Клиента - не получилось.

Любые идеи?


person Community    schedule 04.10.2015    source источник


Ответы (1)


Я не знаю, как это возможно - может быть, кто-то мог бы объяснить - но спящий поток на 1 мс сработал O.o

while (true) {

        test.msg = "55555444444444444444444444444444444444444444444444444444444444444455";
        client.sendTCP(test);
        synchronized (client) {
            try {
                client.wait(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
person Community    schedule 04.10.2015
comment
Предположительно дополнительное время дает клиенту возможность прочитать данные и, таким образом, удалить их из буфера? - person Steve Smith; 09.03.2018
comment
Я не знаю в вашем случае, но эта «методика» позволила указать на исключение NullPointerException внизу, которое я исправил и не нужно было ждать в окончательном коде. - person Gregzenegair; 22.07.2019