gpt4 book ai didi

c - 通过网络发送的填充结构

转载 作者:行者123 更新时间:2023-12-04 18:12:39 24 4
gpt4 key购买 nike

如果我有这样的结构
struct MixedStructure{

char a;

short b;

int c;

char d;

};

填充将生效。

我想知道的是,通过网络发送这样的结构是否有问题。

我的意思是,由于填充,这个结构实际上有 12 个字节(而不是 8 个)。如果在另一端使用了另一种填充方案(或没有),会有什么影响?

最佳答案

这不是你唯一的问题。你怎么知道 sizeof(int) 或 sizeof(short) 在构建该结构的两个盒子之间是一致的?

大多数编译器都有指定 fixed-size variables 的方法。 (即 uint32_t)。为了回答您的具体问题,大多数编译器还可以指定 packing .

将结构覆盖到字节缓冲区是高性能网络编程中非常常见的习惯用法,但可能会带来危险。您还需要了解此成语如何违反 strict-aliasing什么endianess是。

我知道在非常高性能的情况下,这是最好的选择。只是要非常非常小心,并在所有可能一起通信的潜在主机之间进行非常好的测试。如果您不需要这种性能,请查看 google's protocol buffers 之类的内容。以一种非常高效的方式传输数据,让您避免了解打包/字节序/等。

关于c - 通过网络发送的填充结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12303263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com