gpt4 book ai didi

c - 套接字中的网络字节顺序

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:03 25 4
gpt4 key购买 nike

我正在学习 c (Linux) 中的套接字编程,但我真的不明白为什么在发送整数时必须使用 htonl,而在发送字符串 (char*) 时却不需要。我已经阅读了很多论文,但我仍然不知道为什么。

最佳答案

这是因为通过网络发送的数据是按照Big Endian顺序发送的。不同的平台以不同的顺序存储数据。

假设您有一个 0x9FD3 的short。在 Small Endian 平台上,它将作为 0xD39F 存储在内存中。第一个字节是 0xD3,下一个字节是 0x9F。如果您将它发送到默认使用 Big Endian 的机器,它将被解释为 0xD39F (54,1475),而不是 0x9FD3 (40,915)。另一方面,字符串保存为字符数组,这是为了开始。如果您有“aString”,它将在内存中存储为“a”、“S”、“t”、“r”...,因为 1 个字符是 1 个字节宽。只有多字节的数据类型在小端平台上会倒序存储,转换毫无意义

关于c - 套接字中的网络字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253786/

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