我将通过 C++ 套接字发送一个结构。这是一个示例结构:
struct PIPPO
{
int x;
int y;
};
我使用它:
PIPPO test2;
test2.x = 10;
test2.y = 20;
我有上面的代码来序列化并通过套接字发送它。问题是,如果我尝试获取测试变量的十六进制值,我只能看到 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);
通过线路发送原始二进制表示可能会导致问题,特别是当您拥有异构网络或应用程序时。看看protobuf这可能最适合这个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)