|
htonl函数是一个网络转换的函数,他把不确定的一个32位数字,转换成网络通用的32位数字,即大头在后的方式。
****************************************************************************
htonl = Host To Network, type Long /***************************************************************************/ x86系统的数据存放都是按照little-endian的格式(硬件层没有对字节序的区分机制)。
字节顺序
不同的计算机处理数字有两种形式,big-endian和little-endian型式( little-endian格式的数据,例如0X12345678以(0X78 0X56 0X34 0X12)方式保存、 big-endian格式的数据,例如0X12345678以(0X12 0X34 0X56 0X78)方式保存 ),这依赖于他们是怎么设计的,比如Intel的x86处理器,多字节是用little-endian型式。IP地址和和端口在电脑中是多字节存放的,他们是host-byte顺序,然而当IP地址和端口通过网络时,必须转成big-endian形式,也就是network-byte顺序 有一系列函数完成两者之间的转换。比如 host-byte序转network-byte序 u_long htonl(u_long hostlong); int WSAHtonl( SOCKET s, u_long hostlong, u_long FAR * lpnetlong ); u_short htons(u_short hostshort); int WSAHtons( SOCKET s, u_short hostshort, u_short FAR * lpnetshort ); network-byte序转host-byte序 u_long ntohl(u_long netlong); int WSANtohl( SOCKET s, u_long netlong, u_long FAR * lphostlong ); u_short ntohs(u_short netshort); int WSANtohs( SOCKET s, u_short netshort, u_short FAR * lphostshort ); |
理解网络字节序:htonl, htons 与 ntohs 实践解析
本文深入探讨了网络字节序在socket编程中的重要性,详细解释了htonl, htons以及ntohs函数的作用。通过实例展示了如何在Delphi和Windows环境下正确使用这些转换函数,确保在网络通信中数据的一致性。同时,内容涵盖了这些函数在网络编程中的常见问题和解决方案,对于理解图像数据在网络传输中的处理也具有参考价值。"
132246304,19671681,Android中的wpa_supplicant Wi-Fi身份验证,"['Android', 'Wi-Fi', '安全']
2128

被折叠的 条评论
为什么被折叠?



