2017-09-14 17 views
0

私は現在、(目的のために)クライアント/サーバーアプリケーションで作業しています。私はDatagramSocketのタイムアウトを適切に設定する方法と、例外を処理する方法を完全に突き止めています。Datagramsocket setSoTimeout

サーバー側のようになります。私は、タイムアウトが発生した場合に何をしたいのか

while (true) { 
    try { 
     serverSocket = new DatagramSocket(25000); 
     running = acceptConnection(serverSocket, ready); 
     serverSocket.setSoTimeout(5000); 

     while (running) { 

      receivePacket = new DatagramPacket(receiveData, receiveData.length); 
      try { 
       serverSocket.receive(receivePacket); 
      } catch (SocketTimeoutException e) { 
       System.out.println("Timed out..."); 
      } 

      receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength()); 

      ... 

     } 

    ... 

    } catch (IOException e) { 
     System.err.println(""); 
    } finally { 
     serverSocket.close(); 
    } 

    ... 
} 

私は別のクライアントを扱うことができるように、バックメインwhileループに行くことです。サーバーは、一度に1つのクライアントのみを処理するように設計されています。

running = false;をキャッチブロックに追加しようとしましたが、機能しませんでした。

+0

whileループ全体を表示してください。キャッチブロックがどのレイヤーにあるのかは不明です。 –

+0

私は今投稿を編集して説明しました。誤解をおかけして申し訳ありません。 – ZeppRock

+0

接続タイムアウト時にガイド付き再帰を使用してメソッドを呼び出す方法 –

答えて

1

OPはソケット受信がタイムアウトしたときにwhile(true)ループに戻ってwhile(running)ループを抜け出す方法を今ではありませんでした。

私はキーワードを使用してを捕まえた後、彼はこの問題を解決したと言いました。

関連する問題