Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
#1

Данные из принятого UDP пакета - Android

30.01.2014, 12:05. Просмотров 776. Ответов 2
Метки нет (Все метки)

Как вытащить данные из принятого UDP пакета? Есть буфер, например на 100 байт. Принимаю к примеру 37 байт, о чем говорит pack.getLength() . Но если создать буфер длиной pack.getLength() и выполнить pack.getData() то получим массив длиной равной размеру буфера, то есть 100 байт. Но если создать буфер длиной getLength() и скопировать побайтно из буфера нужное кол-во байт то получим то ,что нужно.
Java
1
2
3
4
5
6
7
data = new byte[100];
sock = new DatagramSocket(1889);
pack = new DatagramPacket(data, data.length);
byte[] a = new byte[pack.getLength()];
for (int v=0;v<a.length;v++) {
                            a[v]=data[v];
                        }
По мне это так называемый костыль. Проще можно? Или проще только сделать метод с выше описанным кодом , чтоб он возвращал новый массив нужной длины?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 12:05     Данные из принятого UDP пакета
Посмотрите здесь:

Как получить layout с другого пакета? Android
Android Ошибка подписи пакета
При синтаксическом анализе пакета возникла неполадка Android
Android Отправка пакета (UDP)
Android Что такое инсталяция пакета в андроиде?
Разное имя пакета и приложения Android
Подкючение пакета com.google.android.maps Android
Android Android Studio - ошибка разбора пакета
Вывод принятого сообщения (клиент-сервер) Android
Android studio использование внешнего JAR пакета Android
Android Проверить установку пакета
Android Контрольная сумма TCP пакета

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
30.01.2014, 15:15     Данные из принятого UDP пакета #2
Если уж вам так нужен массив размер которого строго равен количеству принятых байт, то ничего другого придумать нельзя. Могу только посоветовать копировать массив через специальный метод который работает в разы быстрей чем побайтовое копирование:
Java
1
System.arraycopy(src, srcPos, dst, dstPos, length);
А чем вас не устраивает что буфер больше чем количество реально принятых байт? Как по мне, так это обычное дело
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
30.01.2014, 15:19  [ТС]     Данные из принятого UDP пакета #3
Да как бы не то чтобы не нравиться. Просто думал, что есть что-то более простое (сравниваю с C#)
Yandex
Объявления
30.01.2014, 15:19     Данные из принятого UDP пакета
Ответ Создать тему
Опции темы

Текущее время: 06:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru