我必須連接到現有的C系統,以及TCP包看起來像使用java通過tcp發送結構化數據最簡單的方法是什麼?
typedef struct exampleDataPacket{
int messageType;
float dataValue;
char dataDesc[100];
}
因此,要發送這種使用Java數據的,我無法找到我的書什麼。發送/接收這種數據的最佳方式是什麼?
感謝, CP
我必須連接到現有的C系統,以及TCP包看起來像使用java通過tcp發送結構化數據最簡單的方法是什麼?
typedef struct exampleDataPacket{
int messageType;
float dataValue;
char dataDesc[100];
}
因此,要發送這種使用Java數據的,我無法找到我的書什麼。發送/接收這種數據的最佳方式是什麼?
感謝, CP
您可以使用DataOutputStream如果你想寫入的數據是怎麼回事要在C面讀兼容。仔細檢查writeFloat和writeChar文檔,看看它是否真的有效。
否則,您將不得不使用原始的OutputStream
並將數據自己編碼爲字節。
編輯:只是想補充 - 我最好的猜測是,爲你的目的,writeFloat
將工作,但writeChars
不會,由於編碼問題。相反,您必須在您的Java String
上使用getBytes
方法來獲取以您的C代碼所期望的任何單字節字符爲單位的字節數組,然後將這些字節寫入DataOutputStream
。
請記住,Java將有網絡字節順序的東西;很可能C程序員很懶惰,並不期望(至少在我的經驗中),你可能不得不補償他們的錯誤並做一些字節交換。
我會強調「仔細檢查文檔...」。當通過線路移動原語時,您很可能會遇到編碼和不同字節順序的問題。 – kdgregory 2010-01-21 16:46:10
不僅如此,Java中的所有內容都是有符號的,而許多C/C++變量往往是無符號的。 – 2010-01-21 16:52:55