当我的互联网连接断开几秒钟后,我常常不得不重新启动客户端应用程序。我是否必须在每个断开连接上创建新连接,还是有办法在“等待”时保持客户端套接字保持活动状态?要重新建立连接?我不确定断开连接的确切时间。当我们尝试写回输出流时,是readLine()可能能够承受断开连接的影响吗?还是“ &&!kkSocket.isClosed()”检查冗余并关闭while循环?预先感谢。
try {
kkSocket = new Socket("12.345.67.899", 1234);
out = new PrintWriter(kkSocket.getOutputStream(), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
try (
BufferedReader in = new BufferedReader(
new InputStreamReader(kkSocket.getInputStream()));
) {
String fromServer;
while ((fromServer = in.readLine()) != null && !kkSocket.isClosed()) {
doSomething(fromServer);
out.println("Back to server");
}
} catch (IOException e) {
Thread.currentThread().interrupt();
} catch (InterruptedException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
不可能使客户端套接字“等待”以重新建立连接。您可以要做的是创建一个循环,该循环将在断开连接时重试连接到服务器,例如基于计时器(每X秒)。这样,您就不必手动重新启动应用程序。 请注意,您必须实现退出此重试循环的某种方式才能退出程序。 (例如:抛出键盘事件,在连续X次失败尝试后退出等等)