我是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