Java KryoNet BufferUnderflow

У меня очень странная проблема с последней версией KryoNet. Я отправляю очень простой пакет со своего клиента и своего сервера и получаю исключение недостаточное переполнение буфера. У меня есть 4 других зарегистрированных пакета, и все они работают без нареканий. Пакет, в котором возникает проблема опустошения буфера, имеет две строковые переменные и был протестирован как с TCP, так и с UPD. Исключение возникает, когда пакет отправляется довольно быстро, по крайней мере дважды менее чем за секунду. Очень странно, учитывая, что у меня есть другие пакеты, которые обновляются 60 раз в секунду.

Эта проблема сильно отличается от других проблем с переполнением буфера, которые я исследовал. Эта проблема не связана с отправкой очень больших данных, так как пакет содержит только две строковые переменные. Эта проблема также не вызвана апплетом или какой-либо другой конфигурацией, поскольку я запускаю ее как приложение, в настоящее время использующее LibGDX.

Есть ли у вас, ребята, какие-либо идеи о том, что может быть причиной этой проблемы?

Спасибо, и я надеюсь, что вы хорошо провели отпуск, - Джейк.

ИСТОЧНИК: https://github.com/SirTrashyton/SquareContest (у меня проблемы с классом Пакет05Чат)


person SirTrashyton    schedule 28.12.2015    source источник


Ответы (1)


После нескольких часов тестирования я нашел решение. Как оказалось, KryoNet не могла различать типы объектов. Когда я отправил на сервер строку, содержащую что-то похожее на другой объект, I.E. целое число, символ и т. д., KryoNet будет очень странно анализировать строку и выдавать ошибку.

Это было легко исправить, добавив к сообщению суффикс, например, «ОК». Затем, когда сервер отправлял его обратно, я ничего не заменял «ОК».

Надеюсь, это поможет всем, кто получает эту ошибку.

person SirTrashyton    schedule 29.12.2015