我正在使用Socket连接到服务器。我有可变的超时时间,具体取决于我正在执行的选项。我希望能够至少3次重试“连接”方法,然后通知客户端无法打开连接。
我尝试将“connect”方法包装在try/catch中,并在异常捕获为“SocketTimeoutException”时重新调用“connect”,但这没有用。我知道答案可能涉及将整个过程放入for/while循环中,但我似乎还不知道如何解决。
有什么帮助吗?
最佳答案
可能是这样的:
private void doSomething() {
Socket socket = null;
for (int i = 0; i < 3; i++) {
try {
socket = connectToServer();
break;
} catch (IOException e) {
// Log exception,
// show message to user,
// etc.
}
}
if (socket != null) {
// Ok
} else {
// Could not connect to server.
}
}
private Socket connectToServer() throws IOException {
// Always returns a valid socket.
// Throws exception in case of problems.
}