2012-04-26 26 views
3

我正在通过编译器负责对齐,如下面的链接所述。用于大端和小端机器的结构填充

http://vcfaq.mvps.org/lang/11.htm

我概括我的下,我们有什么方案,以编程方式对齐,并会做什么场景编译器,我们的问题吗?

是否需要填充如果两个机器differient端类型即,一个M/C是大端排序和其它是小端和通过TCP/IP协议进行通信并填充需要用于此?

请澄清我的问题。

谢谢!

回答

1

TCP/IP定义了网络字节顺序大端。具有Little-Endian体系结构的计算机必须在传输数据和接收数据之前将TCP/IP标头信息中的字节重新排序为Big-Endian格式。

中的所有TCP/IP套件协议层被定义为大端。

填充/对准不受字节顺序。

+0

TCP/IP仅为协议本身范围内的参数定义字节顺序。有效负载可以按照两个端点同意(优选)的任何顺序。 – 2012-04-26 10:30:39

+0

很好的说明:这就是我想说的! – 2012-04-26 10:32:43

2

你只需要担心填充和路线,当你通过write()发送原始结构(或任何你的功能)。如果发送结构是您真正想要做的,请查看您的编译器文档,了解如何强制编译器关闭填充并对齐1个字节的边界。但是,只能在网络层执行此操作,因为您正在有效关闭正在编译的体系结构的数据优化。如果您在特定于应用程序的算法(大量读取和写入)中使用结构,如果您调整了对齐和填充设置,则性能下降。

此外,您还必须确保该结构的所有领域处于尾序,双方已达成一致。填充和对齐不影响字节顺序。