以前、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);
ので、接続しているときと切断しているときを確認できます。
切断すると、次の 2 つの異なるメッセージが表示されます。
DEBUG: [kryonet] Connection 3 timed out.
と
DEBUG: [kryonet] Unable to read TCP from:
ここに何があるか本当にわからないので、助けていただければ幸いです。
編集:
もう少し情報: とINFO: [kryonet] Connection 3 connected: /192.168.0.104
リスナーがconnected
コールバックを受け取ることに気付きました。約 9 秒かかります! 非常に奇妙な。