Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Передать двоичные данные через сокет / 6 сообщений из 6, страница 1 из 1
11.01.2022, 20:05
    #40125886
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
Есть устройство, общение с которым происходит через TCP.
Мне удалось подключиться к нему через Socket.
Далее нужно передать ему цепочку байтов.
Например, такую: F0 00 12 F5 01
Не пойму, как сделать.
То, что я нашел в примерах, выглядит так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        public void sendData(byte[] data) throws Exception {

            try {
                mSocket.getOutputStream().write(data);
                mSocket.getOutputStream().flush();
            } catch (IOException e) {
                throw new Exception("Невозможно отправить данные: " + e.getMessage());
            }
        }


Подозреваю, что в ф-ю sendData() нельзя просто передать строку "F00012F501".
Скажите, как правильно передавать такие данные?
...
Рейтинг: 0 / 0
12.01.2022, 16:44
    #40126051
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
data это массив байт. Его просто нужно заполнить нужными байтами.

Например, если нужно именно чтоб шестнадцатерично выглядело:

byte data[] = {0x63, 0x7C, 0x77, 0x7B}
...
Рейтинг: 0 / 0
12.01.2022, 17:19
    #40126071
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
wadman,

спасибо!
...
Рейтинг: 0 / 0
12.01.2022, 18:39
    #40126082
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
Еще вопрос.
При инициализации массива возникает ошибка, если элемент массива больше какого-то значения.
При А вот так пропускает:
Код: java
1.
byte data[] = {0x45, (byte) 0x80, 0x06, 0x00, (byte) 0xC0};


Это правильно?
...
Рейтинг: 0 / 0
13.01.2022, 12:43
    #40126271
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
Я не учел, что byte не может хранить число более 127, т.к. он не unsigned.
Как тогда передавать в качестве байтов число 0xC3 ?
Если приводить через (byte) 0xC3, то число получается отрицательным.
...
Рейтинг: 0 / 0
14.01.2022, 14:46
    #40126616
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать двоичные данные через сокет
Уже разобрался
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Передать двоичные данные через сокет / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]