inputstream.available()を使用して、スレッドをブロックせずに読み込むデータがあるかどうかを確認しようとしています。それは> 0の値を返しません。私はそれを間違って使用していますか?InputStream.available()が機能しない
while (slept < logOnTimeOut) {
if (sslSocket.getInputStream().available() > 0) {
if (input.readLine().equals("OK")) { // todo: set timeout here
System.out.println("Successfully Logged On");
isLoggedOn = true;
return true;
}
} else {
Thread.sleep(500);
slept += 500;
}
}
しかし、read()は常にスレッドをブロックしますか?ブロックせずにどうやってチェックできますか? – Leon
@ Leon: 'InputStream'ではできません。ノンブロッキングI/Oが必要な場合は、 'java.nio'にあるものを使う必要があります。 – skaffman
私の最後の質問は、1対多の接続のための次の2つのソリューションですが、どちらが優れていますか? 1. nioを使用する 2.新しいスレッドを使用してすべてのクライアントソケットと通信する – Leon