Я программист на C ++ и мне нужно настроить UDP-связь между Java-приложением для Android и сервером C ++, работающим на ПК.
У меня есть структура, которую мне нужно получить на ПК, которая состоит из следующего:
int
int
float
К сожалению, я в полном недоумении, как я могу сделать это с Java.
Мне нужно создать DatagramPacket, но конструктор принимает только байтовый массив. Теперь с C ++ это было бы легко привести от структуры к символу *. Однако такое приведение не возможно с Java.
Я создал простой класс, в котором есть поля выше. Кажется, все в порядке. Моя оставшаяся проблема заключается в том, как превратить это в байтовый массив. Кто-нибудь может помочь нубу Java на этом фронте?
Ура!
Edit: я создал функцию в классе, которая делает следующее
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();
}
Есть ли лучший способ сделать это?
Я бы предпочел не использовать буфер протокола Google, упомянутый в ответе Стива, потому что, хотя он и интересен, он потребовал бы слишком большого количества изменений в других реализациях платформы, чего я бы действительно не хотел.