1

以前、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 秒かかります! 非常に奇妙な。

4

1 に答える 1

0

誰が同じ問題に巻き込まれる可能性があります。

どうやらそれはAndroidの制限です(おそらくモバイルデバイスであるため課せられたものです)

Serverコードを通常の Java アプリケーションに移動し.jar、Android クライアントを PC に接続すると、すべて正常に動作するようになりました。これまでのところ、問題なく接続された 6 台のデバイスでテストされています。

于 2013-01-17T16:41:50.220 に答える