2016-11-17 55 views
1

我使用Socket连接到服务器。根据我正在执行的选项,我有可变的超时时间。我希望能够在通知客户端无法打开连接之前至少重新尝试“连接”方法3次。重试Android Socket连接超时

我试着在try/catch中包装“connect”方法,并在异常捕获为“SocketTimeoutException”时调用“connect”,但这种方法没有奏效。我知道答案可能涉及将整个过程放在for/while循环中,但我似乎无法弄清楚。

任何帮助?

+0

'SocketTimeoutException'被套上读超时,而不是连接超时。这是一个'ConnectException'。 – EJP

回答

1

事情是这样的,也许:

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. 
}