2016-11-17 18 views
1

私はサーバーに接続するためにソケットを使用しています。私は実行中のオプションに応じてタイムアウトが変わっています。私は接続を開くことができなかったことをクライアントに知らせる前に少なくとも3回 "connect"メソッドを再試行できるようにしたい。再試行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. 
} 
関連する問題