网络字节顺序及其转换函数
(1)
网络字节顺序
每一台机器内部对变量的字节存储顺序不同,而网络传输的数据是一定要统一顺序的。所以对内部字节表示顺序与网络字节顺序不同的机器,一定要对数据进行转换,从程序的可移植性要求来讲,就算本机的内部字节表示顺序与网络字节顺序相同也应该在传输数据以前先调用数据转换函数,以便程序移植到其它机器上后能正确执行。真正转换还是不转换是由系统函数自己来决定的。
(2)
有关的转换函数
*
unsigned
short
int
htons(unsigned
short
int
hostshort):
主机字节顺序转换成网络字节顺序,对无符号短型进行操作4bytes
*
unsigned
long
int
htonl(unsigned
long
int
hostlong):
主机字节顺序转换成网络字节顺序,对无符号长型进行操作8bytes
*
unsigned
short
int
ntohs(unsigned
short
int
netshort):
网络字节顺序转换成主机字节顺序,对无符号短型进行操作4bytes
*
unsigned
long
int
ntohl(unsigned
long
int
netlong):
网络字节顺序转换成主机字节顺序,对无符号长型进行操作8bytes
注:以上函数原型定义在netinet/in.h里
(1)
每一台机器内部对变量的字节存储顺序不同,而网络传输的数据是一定要统一顺序的。所以对内部字节表示顺序与网络字节顺序不同的机器,一定要对数据进行转换,从程序的可移植性要求来讲,就算本机的内部字节表示顺序与网络字节顺序相同也应该在传输数据以前先调用数据转换函数,以便程序移植到其它机器上后能正确执行。真正转换还是不转换是由系统函数自己来决定的。
(2)
*
主机字节顺序转换成网络字节顺序,对无符号短型进行操作4bytes
*
主机字节顺序转换成网络字节顺序,对无符号长型进行操作8bytes
*
网络字节顺序转换成主机字节顺序,对无符号短型进行操作4bytes
*
网络字节顺序转换成主机字节顺序,对无符号长型进行操作8bytes
注:以上函数原型定义在netinet/in.h里