以下は、パラメーター java.net.Socket:getInputStream() として渡すメソッドです。
これは、ほぼ常に完全に機能します。
ソケットからの入力ストリームが空のバイト (あいまいなデータ) の大きなチャンクである場合に問題が発生します。これにより、プログラムが完全に応答しなくなります。誰が何が起こっているのか知っていますか?応答を停止するだけでなく、IOException などを取得しないようにする必要がありますか? たとえば、データが役に立たないあいまいな情報である場合、どうすれば読み取りを終了できますか。
public static String fromStream(InputStream in) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
}
return out.toString();
}