Kryonet отключает клиент 1, как только клиент 2 подключается

Я работал раньше с Kryonet, делая общение 1-к-1, и это работало хорошо.

Сейчас я делаю более "стандартный" проект, где у нас будет 1 сервер и несколько клиентов для подключения к нему.

У меня проблема, как описано в заголовке: клиент 1 подключается, нет проблем. Затем я прошу клиента 2 подключиться, и клиент 1 немедленно отключается. Почему-то сервер не хочет поддерживать более одного одновременного соединения.

Пару раз нам удавалось подключить 2, а затем каждый раз, когда 3-й соединяет другие капли.

Работает на нескольких разных устройствах все ICS+ (galaxy nexus, tab2, SGS3).

Коды, которые я использую, очень похожи на примеры:

сторона сервера:

    server = new Server();
    ServiceData.RegisterKryo(server.getKryo());
    server.addListener(new MyServerListener());
    try {
        server.bind(ServiceData.SERVER_PORT_TCP);
        server.start();
    } catch (IOException e) {
        Log.e(TAG, "IOException. Failed to start server. " + e.getMessage());
        MyServer.this.stopSelf();
    }

А затем на стороне клиента:

final String ip = intent.getExtras().getString(KEY_SERVER_IP);
listener = new MyClientListener();
client = new Client();
client.start();
ServiceData.RegisterKryo(client.getKryo());
client.addListener(listener);
try {
    client.connect(5000, ip, ServiceData.SERVER_PORT_TCP);
} catch (IOException e) {
    Log.e(TAG, "IOException. Failed to start client. " + e.getMessage() + "\n");
    e.printStackTrace();
    MyClient.this.stopSelf();
}

слушатели на данный момент просто Log.v(TAG, "something happened); и я также включил все журналы из библиотеки Kryonet с com.esotericsoftware.minlog.Log.set(com.esotericsoftware.minlog.Log.LEVEL_TRACE); так что я вижу, когда он подключается, а когда отключается.

При отключении я получаю два разных сообщения:

DEBUG: [kryonet] Connection 3 timed out.

а также

DEBUG: [kryonet] Unable to read TCP from:

действительно не уверен, что здесь, и любая помощь будет оценена.

редактировать: немного больше информации: я понял, что между INFO: [kryonet] Connection 3 connected: /192.168.0.104 и мой слушатель получает connected обратный вызов занимает около 9 секунд! Очень странно.

1 ответ

Для кого может попасть в ту же проблему.

Очевидно, это ограничение Android (возможно, наложено, потому что это мобильное устройство)

Я только что переместил Server код для нормального приложения Java .jar и пусть клиенты Android подключаются к ПК, и теперь все работает нормально. До сих пор тестировалось с 6 подключенными устройствами без проблем.

Другие вопросы по тегам