Задать вопрос
@mr_blond97

Как передать байт через getOutputStream()?

Имеется байт и соединение по вебсокет.

Пытаюсь передать байт в сообщении так:
byte newByte = 11;
newByte = 11;
client.getOutputStream().write(newByte);


Не получается, хотя строка конвертированная с помощью .getBytes передается:
client.getOutputStream().write(("0").getBytes());

Как передать байт через getOutputStream()?
  • Вопрос задан
  • 398 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Всё правильно, OutputStream.write() принимает массив байт, который String.getBytes() как раз и возвращает. Чтобы передать один байт вам нужно передать методу write массив из одного элемента:
client.getOutputStream().write(new byte[] {newByte});

Только мне осталась непонятна конструкция byte newByte = new newByte; Если вам нужно объявить переменную содержащую один байт, то выглядеть это должно так:
byte b = 11;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mr_blond97 Автор вопроса
В конструкции была опечатка, мне нужно передать массив из байтов, но у меня не получилось и я начал пробовать передавать байты.

Так передавать не получается:
byte newByte = 11;
client.getOutputStream().write(new byte[] {newByte});


Так тоже не получается:
byte[] newByte = new byte[1];
newByte[0] = 11;
client.getOutputStream().write(newByte);


Иногда может передаваться что то, например при newByte[0] = 0xffffffcf; в консоли будет выводиться неизвестный символ "?"

В то же время вот такой код сработает:
byte[] newByte = new byte[1];
newByte = ("11").getBytes();
client.getOutputStream().write(newByte);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы