in.available()> 0がコメントアウトされているのに、なぜこれがうまく機能するのか誰かが私に説明できますが、私がそれを元に戻すと壊れますか?
mySocket = new Socket("blahblah", 12345);
BufferedInputStream in = new BufferedInputStream(mySocket.getInputStream());
....
char result[] = new char[length];
for (int i = 0; i < length && !mySocket.isClosed() /*&& in.available()>0*/; i++){
result[i] = (char)in.read();
}
具体的には、ユーザーが用語を検索できるAndroidアプリを作成しています。その検索はスペース内の何かに送信され、結果はxml形式で返され、それらを使用して処理を行います。返されるxmlが十分に小さい場合(上記のコードの「長さ」を参照)、コードはin.available()> 0が残っていても問題なく機能します。ただし、長さが大きい場合、in.available()は0を返します。しかし、それがコメントアウトされているので、すべてがスムーズに実行され続けます。
何故ですか?そして、それは私が心配して修正する必要があるものですか?