0

ApacheMinaを使用してTCPクライアントを作成しました。ポートの活性を常にチェックするために、whileループを追加しました。サーバー側で接続が確立されると、ループが切断され、接続が確立されます。私は将来からセッションを取得し、それを使用して通信します。これを行うためのより良い方法はありますか?ループの代わりに、接続がアップするまで待つように要求できますか。

 while(true){
   try {
 ConnectFuture future = ioConnector.connect(new InetSocketAddress(Port),
            new TriggerReceiverHandler(), SOCKET_CONFIG);
    System.out.println("Message Receiver started and listening on port "+ Port);
Thread.sleep(1000);
                session = future.getSession();
                if(session != null)
                    break;
            } catch (InterruptedException e) {
                e.printStackTrace();
            }catch(Exception ce){
                if(ce.getCause() instanceof ConnectException)
                System.out.println("Retrying connection");
            }
        }

もう1つの質問は、サーバーがダウンしていて、サーバーがアップするまで接続を待機し続けたい場合、どうすればよいですか?

4

1 に答える 1

0

答えは、接続を試みたときにのみ接続状態がわかるため、現時点では不可能です。1つの変更は、バージョン1.0以降で追加したり、2.0以降の場合に将来のリスナーを追加したりするThread.sleep(1000);代わりにです。future.join()

于 2011-01-18T15:32:36.493 に答える