私はBufferedReader.readLine()
メソッドを使用してリモートサーバーからの応答を読み取ります(これはCで記述されており、ソースコードにアクセスできません)。
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while((line = br.readLine())!=null){
[...]
}
ただし、タイムアウトになるまで、常に最後の行でブロックされます。だから私は次のコードを使用しました:
int b;
while(true){
b = in.read;
[...]
}
そして、最後に読み取られたバイトの整数値が13であることがわかりました。これは、キャリッジリターンだと思います。
では、なぜreadLine
メソッドがブロックするのでしょうか。サーバーは通常、ストリームの終わりに到達したことをどのように通知しますか?ありがとう。