0

我使用 Apache Mina 创建了一个 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");
            }
        }

另一个问题是,如果服务器关闭并且我希望服务器一直等待连接直到连接,我该怎么办?

4

1 回答 1

0

答案是,目前还不可能,因为只有在我们尝试连接时才知道连接状态。一种修改是Thread.sleep(1000);我们可以future.join()在 1.0+ 版本中添加,或者在 2.0+ 的情况下为将来添加一个监听器

于 2011-01-18T15:32:36.493 回答