0

私のアプリケーションには、クライアントとサーバーのプログラムがあります。サーバーがクライアントから接続を取得するたびに、サーバーは利用可能なすべての ID を MySQL テーブルからクライアントに送信します。これは、while ループを使用してファイルの内容を読み取るためです。

次のコードを試しました:

while((a=in.read())!=-1)

しかし、whileループを読み取るためのコンテンツがファイルにない場合の私の問題は終了せず、そこで停止しています。whileループを終了するには?

4

2 に答える 2

1

in.read()データが読み取れるようになるまでブロックします。API ドキュメントhttp://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()を参照してください。

このメソッドは、入力データが使用可能になるか、ストリームの終わりが検出されるか、例外がスローされるまでブロックされます。

in.available()in.read() を実行する前に、読み取り可能なバイトがあるかどうかを確認することができます。

于 2013-02-12T05:41:18.283 に答える
0

ループを使用するのwhileではなく、スレッドを使用する必要があります。スレッドはソケットからの入力を待機し、データが利用可能になると読み取り、ストリームで見つかった入力を送信/処理します。while と wait (ブロック) をメイン スレッドで使用することはお勧めできません。

于 2013-02-12T05:40:42.027 に答える