我正在开发一个远程控制程序。我需要一次发送和接收多个数据。我使用这个解决方案:
struct PACKET
{
int x;
int y;
};
//...
PACKET p;
p.x = 10;
p.y = 5;
send(socket, (char*)&p, sizeof(PACKET), 0);
但是,我正在考虑这样做是否安全。我应该寻找其他解决方案吗?
最佳答案
这是不安全的,除非你至少可以保证你的结构是一个POD ,这就是你的情况,并且两个平台都使用相同的 endianness ,你不知道的。
编辑
可能会出现一些其他问题:其中一个是对齐(编译器可能会用额外的位填充您的结构),然后数据本身可以使用不同的模型表示。感谢@Andrew 和@Slyps 的评论。
所以毕竟似乎除非您确切知道两个平台上的数据对齐/表示模型/字节顺序,否则您是不安全的。
关于c++ - 通过套接字发送和接收原始结构不安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584097/