@Ernest3
Учусь программированию

Почему in.read() бесконечно ждёт?

Socket socket = new Socket("localhost",2019);
InputStreamReader in = new InputStreamReader(socket.getInputStream());
char a;
String str = "";
while ((a= (char) in.read()) != -1){
    str += a;
}

Я с сервера(построен на SocketChannel) отправляю сообщение. Через дебагер посмотрел что сообщение приходит полностью, но после того как пришел последний символ он просто останавливается на строке с while. Я предполагаю что это из-за того что сревер на SocketChannel.
P. S.
Я решил эту проблему тем, что после каждого сообщения добавляю ";" , и в while прописываю ждать до запятой. Просто интересно почему так происходит и может я делаю что либо не так.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
char - это беззнаковое число, а потому никогда не будет равен -1.
Ответ написан
Bavashi
@Bavashi
Попробуйте сравнивать с нулем:
while ((a= (char) in.read()) != 0){
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы