<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>