一、第一组地址转换函数
#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参数不可以是一个空指针,调用者必须为目标存储单元分配内存并指定其大小,调用成功时,这个指针就是该函数的返回值