当我通过套接字从一个进程向另一个进程发送一个整型变量,然后在接收端打印该值时,在不使用ntohl/htonl的情况下该值仍然相同,那么除了初始化套接字结构之外,我还需要在哪里使用这些函数。我理解小/大端。但是,当值保持不变时,为什么我们需要将端口号和 IP 号转换为主机/网络字节顺序。请详细解释一下整数是如何通过网络传输的?
如果您希望您的程序是可移植的,那么每当您通过网络发送大小大于 1 字节的整数时,您必须首先使用以下命令将其转换为网络字节顺序:htons
or htonl
,并且接收计算机必须使用将其转换为主机字节顺序ntohs
or ntohl
.
在您的情况下,该值仍然相同的原因可能是因为发送计算机和接收计算机具有相同的字节序。换句话说,您正在使用的发送计算机和接收计算机都是小尾数法(或大尾数法,无论是什么情况。)
但是,如果您希望您的程序具有可移植性,则不能指望情况总是如此。例如有一天,发送计算机可能是 Intel x86,接收计算机可能是 Sun SPARC,那么如果你不使用你的程序就会失败htons
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)