Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

30.01.2014, 12:05. Просмотров 841. Ответов 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 пакета (Программирование Android):

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

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

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

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

Разбор udp пакета - Кроссплатформенная разработка
Доброго времени суток! Такой вопрос возник. Я принимаю пакет UDP. В нем хранятся данные для разных функций. Необходимо раскидать...

Отправка udp пакета - C++ Qt
Есть проект, во вложениях. Передача и прием udp пакета. Помогите сделать так, чтобы сообщение склеивалось из введенных данных из трех и...

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

Идентификация отправителя UDP пакета - Сети
Народ привет! Такой вопрос нужно идентифицировать отправителя UDP пакета, люди будут находиться за nat и надо понять что некое...

Разбитие на строчки содержимого UDP пакета - C++ Qt
Доброго времени суток! У меня возник такой вопрос, я получаю UDP пакет, вывожу его содержимое в окно QTextEdit. Необходимо его разбить...

Посылка широковещательного UDP пакета в LINUX-e - C Linux
Что не так? sendto вернул значение 5, т.е. 5-ть байт было отослано на 255.255.255.255 А вот пакеты не отсылается. Сниффером этот пакет...

Отправка UDP пакета - два лишних байта - C Linux
Народ проблема с формирование буфера для отправики через udp socket! Сформировал буфер для отправки! при выводе на STDIN все нормально,...


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

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

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