1、inet_aton \ inet_addr \ inet_ntoa 在点分十进制与网络字节序的二进制之间转换IPv4地址。
2、inet_pton \ inet_ntop 对于IPv4和IPv6地址都适用。
第一组函数
n代表网络字节序的二进制数串
a代表点分十进制字符串
#include <arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
//将strptr所指的字符串转换成一个32位的网络字节序二进制值,并通过指针addrptr存储到
//in_addr结构体中,成功返回1
//如果addrptr指针为空,那么该函数仍然对输入的字符串执行有效性检查,但是不储存任何结果
in_addr_t inet_addr(const char *strptr);
//已被废弃
char *inet_ntoa(strcut in_addr inaddr);
//将32位网络字节序二进制IPv4地址转换成相应的点分十进制数串,
//该函数的返回值所指向的字符串驻留在静态内存中。
第二组函数
p(presentation)代表地址的表达格式(一般为ASCII字符串)
n(numeric)代表地址的二进制值
#include <arpa/inet.h>
int inet_pton(int family, const char *strptr, void *addrptr);
//将strptr指针指向的字符串转换成二进制值,并存放到addrptr指针指向的位置。
//family有AF_INET、AF_INET6两个可选值。
const char *inet_ntop(int family, const void *addrptr, char *strptr,size_t len);
//相反的转换,返回指向结果的指针。
//len是目标存储单元的大小,为了避免溢出。
//<netinet/in.h>中有定义:
// #define INET_ADDRSTRLEN 16
// #define INET6_ADDRSTRLEN 46
//方便指定缓冲区的大小。