为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。
主机到网络
#include <arpa/inet.h>
uint16_t htons(unit16_t hostshort);
uint32_t htonl(unit32_t hostlong);
网络到主机
#include <arpa/inet.h>
uint16_t ntohs(unit16_t netshort);
uint32_t ntohl(unit32_t netlongm);
IP是32位,可使用l型
端口是16位,可使用s型
h表示host
n表示network
l表示32位长整数
s表示16位短整数
1.如果主机是小端宇节序,这些函数将参数做相应的大小端转换然后返回
2.如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回