1.主机字节序到网络字节序 u_long htonl (u_long hostlong); //32位 u_short htons (u_short short); //16位 htons()返回一个网络字节顺序的值
2.网络字节序到主机字节序 u_long ntohl (u_long hostlong); //32位 u_short ntons (u_short short); //16位 ntohs()返回一个以主机字节顺序表达的数
3.ip地址转换函数 in_addr_t inet_addr(const char *cp); 若字符串有效,则将字符串转换为32位二进制网络字节序的IPV4地址;否则,为INADDR_NONE 示例 ulong l1; l1= inet_addr(“192.168.0.74”); cp:点分形式的ip地址,结果是32位整数(内部包含了字节序的转换,默认是网络字节序的模式) 特点: 1、仅适用于ipv4 2、出错时返回-1 3、此函数不能用于255.255.255.255的转换
4.将点分十进制的ip地址转化为用于网络传输的数值格式 int inet_pton(int family, const char *strptr, void *addrptr); 若成功则为1,若输入不是有效的表达式则为0,若出错则为-1 family 参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6) strptr 存放被转换字符串的指针 addrptr 存放二进制结果的指针
5.将数值格式转化为点分十进制的ip地址格式 const char * inet_ntop(int family, const void *addrptr, char *strptr, size_t len); 若成功则为指向结构的指针,若出错则为NULL family 参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6) addrptr 存放被转换二进制的指针 strptr 存放转换后字符串的指针 len 参数是目标存储单元的大小,以免该函数溢出其调用者的缓冲区如果len太小,不足以容纳表达式结果,那么返回一个空指针,并置为errno为ENOSPC。
