2016-08-19 5 views
1

Я использую kryonet для моего проекта LibGDX. Каждый раз, когда клиент подключается к серверу, создается новый идентификатор соединения. Например. Клиент 1: Идентификатор 1. Клиент 2: Идентификатор 2.Kryonet ID подключения ID?

Когда клиент повторно подключается, счетчик продолжается, он, похоже, не повторно использует старые идентификаторы. Например. Клиент 1 повторно подключается: ID 3.

Может ли kryonet сбросить счетчик через какое-то время? Или есть способ сбросить счетчик? Я беспокоюсь о проблемах после того, как мой сервер работает некоторое время.

+0

Как долго мы разговариваем? Предполагая, что 32-битный идентификатор соединения и 100 запросов/с, вы просматриваете более года безотказной работы перед любой проблемой! – Eric

ответ

0

Я решил свою проблему, но я оставлю ее здесь, если кому-то это интересно.

Я смотрел через источник Kryonet и нашел это:

int id = nextConnectionID++; 
if (nextConnectionID == -1) nextConnectionID = 1; 

Когда эта величина достигает максимального значения, он переворачивается до минимального значения. Ссылка: https://stackoverflow.com/a/5131206/4697327.

Думаю, никогда не будет проблем.

EDIT: Kryonet использует -1 в качестве идентификатора, когда соединение никогда не было выполнено. Если nextConnectionID учитывает максимальное значение до 32 бит, то сбрасывается на его минимальное значение и снова подсчитывается до 0, в какой-то момент оно пройдет -1. Это будет проблемой для одного соединения. Я еще не нашел проблему с отрицательными идентификаторами.

+0

Я разместил это как проблему в Kryonets github: https://github.com/EsotericSoftware/kryonet/issues/119 – kwantuM

Смежные вопросы