放需要转换的字符串? dst :存放转换后的结果,在IPv4下,dst指向结构struct in_addr的指针。
4>函数返回值当函数inet_pton()的返回值为-1的时候,通常是用于af所指定的协议族不支持造成,此时errno的返回值为EAFNOSUPPORT;当函数的返回值为0时,表示src指向的值不是合法的IP地址;当函数的返回值为正值时,表示转换成功。
2.inet_ntop()函数1>函数功能inet_pton()函数将二进制的网络IP地址转换为字符串。
2>函数原型:#include #include #include intinet_nton(int af, const void *src, char *dst,socklen_t cnt);3>函数形参:? int af:af表示网络类型的协议族,在IPv4下的值为AF_I
NET;? src :为需要转换的二进制IP地址,在IPv4下,src指向一个structin_addr结构类型的指针。? dst指向保存结果缓冲区的指针? cnt的值是dst缓冲区的大小4>函数返回值Inet_ntop()函数返回一个指向dst的指针。当发生错误时,返回NULL.当af设定的协议族不支持时,errno设置为EAFNOSUPPORT;当dst缓冲区大小过小的时候errno的值为ENOSPC. 3.函数实例:#include #include #include
#include #include #include int main(int argc,char *argv[])
{ struct in_addr ip;char ipstr[] = “192.168.1.1”;char addr[ADDRLEN];const char * str = NULL;int err = 0;if(err > 0){ printf(“i
net_pton:ip %s value is :0x%x\n”,ipstr,ip.s_addr);} //把192.168.12.255转换为网络字节序ip.s_addr = htonl(192 << 24 | 168<<16 | 12<<8 | 255);str = (const char *)inet_ntop(AF_INET,(void*)&;ip,(char *)&;addr[0],ADDRLEN);if(str){ printf(“inet_ntop :ip 0x%x is%s\n”,ip.s_addr,str);}四。inet_makeaddr()函数,inet_lnaof()函数和inet_netof()函数1.struct in_addr inet_makeaddr(int net,int host)
1>函数功能:一个主机的IP地址分为网络地址和主机地址,inet_makeaddr()函数将主机字节序的网络地址net和主机地址host合并成一个网络字节序的IP地址。
2>函数形参:? int net:存放网络号参数(二进制形式的主机字节序)? int host:存放主机号地址(二进制形式的主机字节序)
3>函数返回值:返回一个网络字节序的IP地址4>函数实例:unsigned long net,host;net = 0x0000007F;host = 0x00000001;struct in_addr ip = inet_makeaddr(net,hst);2.in_addr_t inet_lnaof(struct in_addr in)
1>函数功能:该函数从参数in中提取出主机地址,执行成功后返回主机字节顺序形式的主机地址。
例如:172.17.242.131属于B类地址,则主机号为低16位,主机地址为0.0.242.131,按主机字节顺序输出则为0xf283. 2>函数形参? struct in_addr in:in存放的是主机字节序的二进制形式的IP地址3>函数返回值:返回主机字节序的二进制形式的IP主机部分的数值4>函数实例:const char *addr = “127.0.0.1”;unsigned long ip = inet_network(addr);unsigned long host_id = inet_lnaof(ip);3.in_addr_t inet_netof(struct in_addr in)
1>函数功能:该函数从参数in中提取出网络地址,执行成功后返回主机字节顺序形式的网络地址。
如:172.17.242.131属于B类地址,则高16位表示网络号,网络地址为172