Я бы не стал полагаться на readLine
для вашего основного цикла, потому что readLine
полагается на "будущие" данные (CR, или LF, или CR + LF, и возвращает ноль, если достигнут конец потока).Из-за этого, если за CR не следует LF, BufferedReader
застревает.Этот readLine
метод больше подходит для чтения содержимого файла.
В вашем случае я бы читал по одному символу за раз с
while ((myChar = input.read()) != -1) {
// processing here, storing information in a buffer and taking appropriate actions if
// A CR or LF is found
}
Но даже это поведение сомнительно, потому что Unicodechar может быть больше одного байта, поэтому поток может зависнуть, если отправляется первый байт, а не второй.Вы уверены, что ваше сообщение Unicode?Если нет, то InputStream
будет более подходящим, чем Reader
.