Показать полную графическую версию : [решено] Отправить разные данные с помощью DatagramPacket
crashtuak
24-02-2011, 00:16
Мне нужно отправить несколько типов данных, а именно IP отправщика, его ник, сообщение(тоже текст), и три служебных переменных(интеджеры). И собственно вопрос: как это все запаковать в byte[] и потом распаковать при получении?
crashtuak, тебе надо определить, сколько байт занимает то или иное поле. т.е. размерность переменной (Байт, слово, двойное слово). Затем записать это в массив байт, затем "разобрать" принимающей стороной. Т.к. у тебя несколько типов данных, можно попробовать использовать тип "запись". Как это делается на Java, я честно сказать не знаю, надо полистать мануал. Соотв. вопрос отправки/приема это "обслуживающая" подзадача. Это ... это тоже надо читать. Я могу попробовать объяснить "на пальцах", но думаю что сделаю только хуже.
не могу сказать если такое на яве, но если бы писалось в си похожих, то это было бы так. Берем набор твоих переменных, создаем битовые массивы длинны этих переменных и присваиваем вторым первое (т.к. любая переменная - это биты, то тут все происходит нормально, главное длинна переменной в битах). А затем создаем итоговый битовый массив длинны равной сумме всех имеющихся массивов бит - и их по очереди запихиваем в него. На обратной стороне обратная операция - раскладываем на битовые массивы и из них делаем переменные нужного типа.
во.. нашел статью - читай http://www.arininav.ru/js/java04.htm вторая ссылка в яндексе на запрос - @java преобразование типов переменных@
crashtuak
25-02-2011, 22:04
Спасибо за советы! Именно так и сделал. Первых три служебных заняли у меня 12 байтов(по 4 на каждый integer), потом еще 3*4 байтов для integer"ов, которые несут в себе длину нужных строк, а далее уже байты строк. Пакуется и распаковывается нормально, только геморно как то, окультуривать надо:)
crashtuak
25-02-2011, 22:30
Во, нашел идеальный вариант-сериализация (http://habrahabr.ru/blogs/java/60317/). Позволяет весь объект подать в виде массива байтов, и потом так же без труда получить готовый объект из такого массива.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.