Отслеживание Apache Mina TCP сессии от клиента - PullRequest
0 голосов
/ 10 января 2011

Я создал 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");
            }
        }

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

1 Ответ

0 голосов
/ 18 января 2011

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

...