当我通过套接字从一个进程发送整数变量到另一个进程,并在接收端打印该值时,即使没有使用ntohl / htonl,该值仍然保持不变,那么我需要在哪里使用这些函数,除了初始化套接字结构之外?我了解大小端。但是为什么我们需要将端口和IP号转换为主机/网络字节顺序,当值保持不变时。请详细说明如何在网络上传输整数?
htons
或htonl
将其转换为网络字节序,接收计算机必须使用ntohs
或ntohl
将其转换为主机字节序。htons
,则您的程序将失败。它保持不变,因为在您的架构上,网络顺序与本机顺序相同。如果您从未预计将代码编译为另一种架构,则可以省略hton / ntoh调用。然后,您的代码将无法移植。
hton*
和ntoh*
的情况下实现的,而且事实上这些函数并不能保证执行串行化。 - autistic