Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Отправить разные данные с помощью DatagramPacket (http://forum.oszone.net/showthread.php?t=200320)

crashtuak 24-02-2011 00:16 1620376

Отправить разные данные с помощью DatagramPacket
 
Мне нужно отправить несколько типов данных, а именно IP отправщика, его ник, сообщение(тоже текст), и три служебных переменных(интеджеры). И собственно вопрос: как это все запаковать в byte[] и потом распаковать при получении?

lxa85 24-02-2011 09:11 1620485

crashtuak, тебе надо определить, сколько байт занимает то или иное поле. т.е. размерность переменной (Байт, слово, двойное слово). Затем записать это в массив байт, затем "разобрать" принимающей стороной. Т.к. у тебя несколько типов данных, можно попробовать использовать тип "запись". Как это делается на Java, я честно сказать не знаю, надо полистать мануал. Соотв. вопрос отправки/приема это "обслуживающая" подзадача. Это ... это тоже надо читать. Я могу попробовать объяснить "на пальцах", но думаю что сделаю только хуже.

Beyound 24-02-2011 18:04 1620915

не могу сказать если такое на яве, но если бы писалось в си похожих, то это было бы так. Берем набор твоих переменных, создаем битовые массивы длинны этих переменных и присваиваем вторым первое (т.к. любая переменная - это биты, то тут все происходит нормально, главное длинна переменной в битах). А затем создаем итоговый битовый массив длинны равной сумме всех имеющихся массивов бит - и их по очереди запихиваем в него. На обратной стороне обратная операция - раскладываем на битовые массивы и из них делаем переменные нужного типа.
во.. нашел статью - читай http://www.arininav.ru/js/java04.htm вторая ссылка в яндексе на запрос - @java преобразование типов переменных@

crashtuak 25-02-2011 22:04 1621868

Спасибо за советы! Именно так и сделал. Первых три служебных заняли у меня 12 байтов(по 4 на каждый integer), потом еще 3*4 байтов для integer"ов, которые несут в себе длину нужных строк, а далее уже байты строк. Пакуется и распаковывается нормально, только геморно как то, окультуривать надо:)

crashtuak 25-02-2011 22:30 1621886

Во, нашел идеальный вариант-сериализация. Позволяет весь объект подать в виде массива байтов, и потом так же без труда получить готовый объект из такого массива.


Время: 02:26.

Время: 02:26.
© OSzone.net 2001-