Отправить разные данные с помощью DatagramPacket
Мне нужно отправить несколько типов данных, а именно IP отправщика, его ник, сообщение(тоже текст), и три служебных переменных(интеджеры). И собственно вопрос: как это все запаковать в byte[] и потом распаковать при получении?
|
crashtuak, тебе надо определить, сколько байт занимает то или иное поле. т.е. размерность переменной (Байт, слово, двойное слово). Затем записать это в массив байт, затем "разобрать" принимающей стороной. Т.к. у тебя несколько типов данных, можно попробовать использовать тип "запись". Как это делается на Java, я честно сказать не знаю, надо полистать мануал. Соотв. вопрос отправки/приема это "обслуживающая" подзадача. Это ... это тоже надо читать. Я могу попробовать объяснить "на пальцах", но думаю что сделаю только хуже.
|
не могу сказать если такое на яве, но если бы писалось в си похожих, то это было бы так. Берем набор твоих переменных, создаем битовые массивы длинны этих переменных и присваиваем вторым первое (т.к. любая переменная - это биты, то тут все происходит нормально, главное длинна переменной в битах). А затем создаем итоговый битовый массив длинны равной сумме всех имеющихся массивов бит - и их по очереди запихиваем в него. На обратной стороне обратная операция - раскладываем на битовые массивы и из них делаем переменные нужного типа.
во.. нашел статью - читай http://www.arininav.ru/js/java04.htm вторая ссылка в яндексе на запрос - @java преобразование типов переменных@
|
Спасибо за советы! Именно так и сделал. Первых три служебных заняли у меня 12 байтов(по 4 на каждый integer), потом еще 3*4 байтов для integer"ов, которые несут в себе длину нужных строк, а далее уже байты строк. Пакуется и распаковывается нормально, только геморно как то, окультуривать надо:)
|
Во, нашел идеальный вариант- сериализация. Позволяет весь объект подать в виде массива байтов, и потом так же без труда получить готовый объект из такого массива.
|
Время: 02:26.
© OSzone.net 2001-