重複の可能性:
readLine() の実行時にソケットがスタックする
私はjarライブラリを作成し、Androidプロジェクトで使用したいと考えています。このライブラリの重要なメソッドの 1 つを次に示します。
private static String convertStreamToString(InputStream is) {
/* is - it's the inputStream created from server response entity.
I use org.apache.http classes to communicate with server. */
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) { // <-- this line
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
ライブラリを使用して Java アプレットを構築し、それを PC で実行すると、このコードは非常にうまく機能します。
しかし、Android アプリケーションで使用し、エミュレーターまたはデバイスで実行すると、マークされた行で非常に長い間 (常にではありません!) スタックすることがあります。したがって、この場合は SockedTimeoutExceptions が発生します。
ということで、その理由が知りたいです。そして、あなたが私をこの問題から解放するのを手伝ってくれるなら、それは素晴らしいことです.