我是C++程序员,需要在java android应用程序和运行在PC上的C++服务器之间建立一些UDP通信。在Java中通过UDP发送C++结构
我有结构的,我需要收到由以下的PC上:
int
int
float
不幸的是我完全不知所措,我怎么能做到这一点与Java。
我需要创建一个DatagramPacket,但构造函数只需要一个字节数组。现在用C++,这将是一个从结构到char *的简单转换。然而,像Java这样的转换对Java来说是不可能的。
我已经创建了一个简单的类,它有上面的字段。这似乎很好。我剩下的问题是如何将它变成一个字节数组。任何人都可以在这方面帮助Java noob吗?
干杯!
编辑:我创建了一个,做以下
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();
}
有没有更好的方式来做到这一点的类中的函数?
我宁可不使用Steve答案中提到的google协议缓冲区,因为虽然它很有趣,但它需要对其他平台实现进行太多更改,而我真的不想这么做。
我同情'protobuf'这个概念,在这种情况下,它是一个大锤来打破坚果。然而,这些要求有扩展的方法 - 如果您需要处理的数据集预计会增长,您可能会发现protobuf是合理的。 – 2010-10-21 13:48:42