我使用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");
}
}
另一个问题是,如果服务器关闭,我希望服务器一直等到连接,直到它,我该怎么办?
答案 0 :(得分:0)
答案是,截至目前,这是不可能的,因为只有当我们尝试连接时才知道连接状态。我们可以在版本1.0+中添加Thread.sleep(1000);
,或者在2.0 +
future.join()
。