2009-08-13 18 views
0

私は、javax.commパッケージを使用して、SerialPort上で読み書き操作を実行しています。入力ストリームにデータが含まれていないかどうかを確認するにはどうすればよいですか?

InputStream型のオブジェクトをInputStreamとして作成しました。

私の質問はSERIALPORT上のデータavailibilityのにかかわらず、in.available(....

  1. である)により常に私はバイトが利用可能であるかどうかを判断することはできませんよこれにゼロを返します。

私はin.readを使用する場合は()を直接、永遠に実行をブロックするようです。..

お返事を待っている...

を助けてください..

次のことができますまた..私のメールアドレスにお返事を見越して

を....私にメール

UTSAV

答えて

1

これはブロックI/Oの一般的な動作です。 read()は、いくつかのバイトが使用可能になるまで、EOFまたはエラーが発生するまでブロックされます。新しいスレッドを作成し、より多くのデータを待つだけです。

高速ループを作成してCPU使用量を増やす可能性があるため、available()コールは使用しないでください。あなたが本当にこれを単一のスレッドでしたいのであれば、NIOを調べてください。

関連する問題