为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。

    主机到网络

    1. #include <arpa/inet.h>
    2. uint16_t htons(unit16_t hostshort);
    3. 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.如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回