c - 当我用套接字传输结构时,我应该考虑字节顺序吗

标签 c sockets byte

struct A
{
    int a;
    int b;
};
char data[10];
struct A a;

如果我使用memcpy()函数将a转换成char数组data,并用socket传输,我是否应该考虑字节顺序现在?

最佳答案

如果它是一个真实的项目(将在现实世界中部署的东西)那么是的,您绝对需要关心字节顺序。您还需要关心其他序列化问题,包括数据类型大小和结构字段对齐。

您可以通过使用类型显式大小来消除一些麻烦,例如使用 int32_t 而不是 int

结构字段对齐问题要复杂得多。简短的回答:不要从一台机器上send()一个原始结构,然后在另一台机器上recv()它。这样做假设在两个系统上运行的应用程序以完全相同的方式布置它们的结构字段(具有相同的填充)。

关于c - 当我用套接字传输结构时,我应该考虑字节顺序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33718045/

相关文章:

c - 更改变量声明顺序时程序崩溃

java - 客户端无法连接到服务器套接字 - Android

c - 使用 select() 函数发送和接收数据

c++ - 任何人都知道一个好的地址簿实现?

c - 在 Windows 7 上获取 Valgrind

c - 使用 glibc 在 Windows 中未定义对 sleep() 的引用

c# - 如何从 Socket 获取 IP 地址

java - 通过java程序读取另一个软件文件

java - Java中字节移位的奇怪行为

swift - 将结构(包括字节数组)与 SWIFT 结合使用 - 结构到 NSData 和 NSData 到结构