Сокеты: BufferedReader readLine () блоки

Я использую метод 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 блокируется? Как сервер обычно сигнализирует о достижении конца потока? Спасибо.

12
задан bluish 7 March 2012 в 12:48
поделиться