2011-01-10 80 views
0

我已经使用Apache Mina创建了一个TCP客户端。我添加了一个while循环来不断检查端口的活性。一旦连接在服务器端,连接就会断开并建立连接。我从未来开始讨论并使用它进行交流。 有没有更好的方法来做到这一点。而不是循环,我可以要求连接等到它结束。来自客户端的Apache Mina TCP会话跟踪

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"); 
      } 
     } 

另一个问题是,如果服务器宕机,我希望服务器保持等待,直到它建立连接,我应该怎么办?

回答

0

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