我正在使用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.
}

10-08 09:00
查看更多