我正在研究远程控制程序。我需要一次发送和接收多个数据。我使用这个解决方案:
struct PACKET
{
int x;
int y;
};
//...
PACKET p;
p.x = 10;
p.y = 5;
send(socket, (char*)&p, sizeof(PACKET), 0);
但是,我正在考虑这是否是一种安全的方法。我应该找到另一种解决方案吗?
答案 0 :(得分:1)
这是不安全的,除非你能保证至少你的结构是POD,这是你的情况,并且两个平台都使用相同的endianness,你不这样做知道。
修改强>
可能会出现一些其他问题:对齐是一个(编译器可能会使用其他位填充您的结构),然后可以使用不同的模型表示数据本身。感谢@Andrew和@Slyps的评论。
所以看起来除非你在两个平台上确切地知道你的数据对齐/表示模型/字节顺序,否则你就不安全了。