6

BufferedReader.readLine()ハングしないようにする方法はありますか?

私は次のようなサーバーを作成しています。

  • クライアントが入力を配信したかどうかを確認します。
  • そうでない場合は、他のコードを実行し、最終的にはクライアントの入力チェックにループバックします。

クライアントが実行せずに入力を配信したかどうかを確認するにはどうすればよいreadLine()ですか?を実行するreadLine()と、入力が配信されるまでスレッドがハングしますか?

4

1 に答える 1

8

BufferedReader.ready()次のように使用できます。

BufferedReader b = new BufferedReader(); //Initialize your BufferedReader in the way you have been doing before, not like this.

if(b.ready()){
    String input = b.readLine();
}

ready()true入力のソースが読み取られていないストリームに何も入れていない場合に戻ります。

編集:メモtrueです。文字が1つしかない場合でも、readyが返されます。read()改行またはキャリッジリターンがあるかどうかを確認するために使用できます。これらは行の終わりを示します。

詳細情報:http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#ready()

于 2013-03-19T21:30:56.263 に答える