Я уже работал с Kryonet, когда я общался один на один, и это работало хорошо.
Сейчас я делаю более «стандартный» проект, в котором у нас будет 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 секунд! Очень странно.