地址转换函数

一、第一组地址转换函数 

#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参数不可以是一个空指针,调用者必须为目标存储单元分配内存并指定其大小,调用成功时,这个指针就是该函数的返回值
原文地址:https://www.cnblogs.com/soldierback/p/10663494.html