Отправка структуры C ++ через UDP в Java

Я программист на C ++, и мне нужно настроить некоторые UDP-соединения между Java-приложением для Android и сервером C ++, работающим на ПК.

У меня есть структура, которую мне нужно получить на ПК, которая состоит из следующего:

int
int
float

К сожалению, я совершенно не понимаю, как я могу сделать это с помощью Java.

Мне нужно создать DatagramPacket, но конструктор принимает только байтовый массив. Теперь с C ++ это было бы легко преобразовать из структуры в char *. Однако такое преобразование невозможно с Java.

Я ' Мы создадим простой класс с указанными выше полями. Вроде бы нормально. Моя оставшаяся проблема - как превратить это в массив байтов. Может ли кто-нибудь помочь Java-новичку в этом вопросе?

Ура!

Редактировать: Я создал в классе функцию, которая выполняет следующее

        public byte[] GetBytes() throws IOException
        {
            ByteArrayOutputStream   byteOut = new ByteArrayOutputStream();
            DataOutputStream        dataOut = new DataOutputStream( byteOut ); 
            dataOut.writeInt( Integer.reverseBytes( int1) );
            dataOut.writeInt( Integer.reverseBytes( int2 ) );
            dataOut.writeFloat( float1 );

            return byteOut.toByteArray();
        }

Есть ли лучший способ сделать это?

I ' Я бы предпочел не использовать буфер протокола Google, упомянутый в ответе Стива, потому что, хотя это интересно, для этого потребуется слишком много изменений в реализациях других платформ, чего я бы не стал делать.

6
задан Goz 21 October 2010 в 11:16
поделиться