一、第一组地址转换函数
#include <arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
作用:点分十进制 => 32位的网络字节序二进制值
返回:若字符串有效则为1,否则为0
in_addr_t inet_addr(const char *strptr);
作用:点分十进制 => 32位的网络字节序二进制值
说明:目前已被废弃
返回:若字符串有效则为32位二进制网络字节序的IPv4地址,否则为INADDR_NONE
(INADDR_NONE通常是一个32位均为1的值)
char *inet_ntoa(struct in_addr inaddr);
作用:32位的网络字节序二进制值 => 点分十进制
返回:指向一个点分十进制数串的指针
二、第二组地址转换函数
#include <arpa/inet.h>
int inet_pton(int family, const char *strptr, void *addrptr);
返回:若成功则为1,若输入不是有效的表达格式则为0,若出错则为-1
const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
返回:若成功则为指向结果的指针,若出错则为NULL
注:两个函数的family参数既可以是AF_INET,也可以是AF_INET6;如果以不被支持的地址族作为family参数,这两个函数就都返回一个错误,并将errno置为EAFNOSUPPORT;
inet_ntop函数的strptr参数不可以是一个空指针,调用者必须为目标存储单元分配内存并指定其大小,调用成功时,这个指针就是该函数的返回值