ObjectInputStream.available()
のjavadocにあるように:
ブロックせずに読み取ることができるバイト数を返します。
次のコードを次のように使用できるはずですScanner.hasNext()
if (inputStream.available() > 0) {
Object input = inputStream.readObject();
}
しかし、ストリームに未読データがあっても使用すると、この状態になりませんtrue
。
実際、クライアントサーバーアプリケーションでこのように使用していますが、次の場所でスタックしますif
:
while (continueListening) {
Object responseObj;
try {
if (inputStream.available() == 0) { // this condition is always met
continue;
}
responseObj = inputStream.readObject();
.
.
.