<1> 主机字节序是不确定的,可能大端可能小端,而网络字节序是确定的为大端,所以需要将其转化成统一的
htonl()
htons()
ntohl()
ntohs()
//h = host n = net l = long s = short
<2> 点十分进制数串 和长度为32位的网络字节序二进制间转换IPV4地址
in_addr_t inet_addr(const char* strpr)
返回值为32位的网络字节序二进制值,但有缺点,255.255.255.255不能由该函数处理,而且有些错误返回值是-1,有些是INADDR_NONE。
int inet_aton(const char* strpr,struct in_addr* addrptr)
成功返回1,失败为0
将一个字符串IP地址转换为一个32位的网络序列IP地址,strpr为IP地址,而addrptr为将要用新的IP地址更新的结构
char* inet_ntoa(struct in_addr inaddr)
将一个32位的网络字节序二进制IPV4地址转换成相对应的点分十进制数串.
<3> inet_pton , inet_ntop
这是随ipv6出现的新函数。
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
inet_pton函数尝试转换strptr指针所指的字符串,并通过addrptr存放二进制结果
inet_ntop进行相反的转换,从二进制数值转换为表达式,len是目标存储单元的大小,以免该函数溢出其调用者的缓冲区。