Отслеживание сеанса TCP Apache Mina от клиента

Я создал TCP-клиент с помощью Apache Mina. Я добавил цикл 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");
            }
        }

Другой вопрос: если сервер не работает, и я хочу, чтобы сервер продолжал ждать соединения до тех пор, пока он не включится, что мне делать?


person Manoj    schedule 10.01.2011    source источник


Ответы (1)


Ответ таков: на данный момент это невозможно, так как состояние соединения известно только тогда, когда мы пытаемся подключиться. Одна модификация заключается в том, что вместо Thread.sleep(1000); мы можем добавить future.join() в версии 1.0+ или добавить прослушиватель на будущее в случае версии 2.0+.

person Manoj    schedule 18.01.2011