Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ящюр
97 / 97 / 60
Регистрация: 15.03.2013
Сообщений: 525
Записей в блоге: 1
1

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

30.01.2014, 12:05. Просмотров 903. Ответов 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];
                        }
По мне это так называемый костыль. Проще можно? Или проще только сделать метод с выше описанным кодом , чтоб он возвращал новый массив нужной длины?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 12:05
Ответы с готовыми решениями:

Отправка пакета (UDP)
День добрый Как организовать передачу пакета (UDP) из любого участка кода?...

Вывод принятого сообщения (клиент-сервер)
Всем привет ! Делаю клиента. (для сервера) Проблема в том, что принятые...

Получение байтов из пакета, принятого в WSARecv
Здравствуйте, хочу спросить, как получить байты полученого пакета с функции...

Тип возврата функции recv и максимально возможный размер принятого пакета.
Как известно,функция recv возвращает переменную типа ssize_t. А может ли вообще...

Передача пакета по UDP
Помогите, пожалуйста, передать структуру данных с помощью компонентов Indy 9...

2
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
30.01.2014, 15:15 2
Если уж вам так нужен массив размер которого строго равен количеству принятых байт, то ничего другого придумать нельзя. Могу только посоветовать копировать массив через специальный метод который работает в разы быстрей чем побайтовое копирование:
Java
1
System.arraycopy(src, srcPos, dst, dstPos, length);
А чем вас не устраивает что буфер больше чем количество реально принятых байт? Как по мне, так это обычное дело
1
ящюр
97 / 97 / 60
Регистрация: 15.03.2013
Сообщений: 525
Записей в блоге: 1
30.01.2014, 15:19  [ТС] 3
Да как бы не то чтобы не нравиться. Просто думал, что есть что-то более простое (сравниваю с C#)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 15:19

Расшифровка UDP пакета
Добрый день. Возникла одна проблема. Я работаю с лазерным датчиком (LS2D),...

Отправка udp пакета
Есть проект, во вложениях. Передача и прием udp пакета. Помогите сделать так,...

Разбор udp пакета
Доброго времени суток! Такой вопрос возник. Я принимаю пакет UDP. В нем...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru