gpt4 book ai didi

htons 中的混淆 - little endian/big endian

转载 作者:太空狗 更新时间:2023-10-29 16:51:11 25 4
gpt4 key购买 nike

当我通过套接字将一个整数变量从一个进程发送到另一个进程,然后在接收端打印值时,不使用 ntohl/htonl,该值仍然相同,那么除了初始化之外,我还需要在哪里使用这些函数套接字结构。我了解小/大端。但是为什么我们需要在值保持不变的情况下将端口号和 IP 号转换为主机/网络字节顺序。请详细说明整数是如何通过网络传输的?

最佳答案

如果你希望你的程序是可移植的,那么任何时候你通过网络发送一个大于 1 字节的整数,你必须首先使用 htons 将它转换为网络字节顺序>htonl,并且接收计算机必须使用 ntohsntohl 将其转换为主机字节顺序。

在您的情况下,值仍然相同的原因可能是因为发送计算机和接收计算机具有相同的字节顺序。换句话说,您正在使用的发送计算机和接收计算机都是小端(或大端,无论是哪种情况。)

但是如果你希望你的程序是可移植的,你不能依赖它总是如此。例如有一天,发送计算机可能是 Intel x86,接收计算机可能是 Sun SPARC,然后如果您不使用 htons,您的程序就会失败。

关于htons 中的混淆 - little endian/big endian,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678490/

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