我會通過C++套接字發送一個結構。這是一個例子的結構:序列化一個結構,並通過套接字發送它與C++
struct PIPPO
{
int x;
int y;
};
,我與使用:
PIPPO test2;
test2.x = 10;
test2.y = 20;
和我有上面的代碼序列化和經由套接字發送它。問題是,如果我試圖獲得測試變量的HEX值,我只能看到0A,而事實上在另一臺接收數據的計算機上,我無法將二進制數據轉換回結構體。有人能幫我嗎?
template <class T> void SerializeData(char *outputArray, T inputData)
{
memcpy(outputArray, &inputData, sizeof(inputData));
}
char *StrToHexStr(char *str)
{
char *newstr = new char[(strlen(str)*2)+1];
char *cpold = str;
char *cpnew = newstr;
while('\0' != *cpold) {
sprintf(cpnew, "%02X", (char)(*cpold++));
cpnew+=2;
}
*(cpnew) = '\0';
return(newstr);
}
char *test = new char[sizeof(PIPPO)];
memcpy((void *)&test, (void *)&test2, sizeof(test2));
send(this->m_socket, test, strlen(test), 0);
+1提供鏈接到`protobuf`。它看起來很有趣。 :-) – Nawaz 2011-01-31 14:40:25
我alredy看到谷歌協議緩衝區,但我認爲這是一個程序,在Windows上運行,只用C++編寫的真正的開銷。我會推薦protobuffer異構應用程序,無論如何感謝您的回覆我的問題的興趣 – Stefano 2011-01-31 16:37:16