<aside> 💡

</aside>

下面 3 个函数可用于用点分十进制字符串表示的 IPv4 地址和用网络字节序整数表示的 IPv4 地址之间的转换

#include <arpa/inet.h>
in_addr_t inet_addr(const char *cp);
int inet_aton(const char *cp, struct in_addr *inp);
char *inet_ntoa(struct in_addr in);

下面这对更新的函数也能完成前面 3 个函数同样的功能,并且它们同时适用 IPv4 地址和 IPv6 地址

    #include <arpa/inet.h>
    // p:表示IP地址字符串,n:表示network,网络字节序的整数
    int inet_pton(int af, const char *src, void *dst);
        af:地址族, AF_INET / AF_INET6
        src:需要转换的点分十进制的IP字符串
        dst:传出参数,转换后的结果保存在这里

    // 将网络字节序的整数,转换成IP地址字符串
    const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
        af:地址族: AF_INET  AF_INET6
        src:要转换的ip的整数的地址
        dst:传出参数,转换成的IP地址字符串保存的地方
        size:第三个参数的大小(数组的大小)
        返回值:返回转换后的数据的地址(字符串),和 dst 是一样的

<aside> 💡

IP地址转换可以进行 字符串IP-整数 的转换 ,与 主机-网络字节序 的转换

</aside>