2016-11-17 2 views
1

Ich benutze Socket, um eine Verbindung zu einem Server herzustellen. Ich habe variable Timeouts abhängig von den Optionen, die ich ausführe. Ich möchte in der Lage sein, die Methode "Verbinden" mindestens dreimal zu wiederholen, bevor ich den Client darüber informiere, dass die Verbindung nicht geöffnet werden konnte.Erneut versuchen Android Socket Verbindung bei Timeout

Ich habe versucht, die "connect" -Methode in eine try/catch und ruft "connect", wenn die Ausnahme catch "SocketTimeoutException", aber dies hat nicht funktioniert. Ich weiß, dass die Antwort wahrscheinlich darin besteht, den ganzen Prozess in eine for/while-Schleife zu stellen, aber ich kann nicht herausfinden, wie.

Irgendwelche Hilfe?

+0

'SocketTimeoutException' auf einem Lese Timeout ausgelöst wird, kein connect Timeout. Das kommt als 'ConnectException'. – EJP

Antwort

1

So etwas, vielleicht:

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