问题一:inet—pton和inet--nton函数说明:
字母p和n分别代表presentation和numeric。地址的表达式(presentation)通常是ASCII串,数值(numeric)格式则是存在于套接口地址结构中的二进制值。
#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.
第一个函数转换有指由指针strptr所指的串,通过指针addrptr存储二进制的结果。如果成功,则返回值为一,如果对于指定的family输入串不是有效的表达格式,则返回值为0.
inet_ntop进行相反的转换,即从数值格式(addrptr)到表达格式(strptr)进行转换。参数len是目标的大小,以免函数溢出其调用者的缓冲区。为有助于规定这个大小,在头文件<netinet/in.h>中有如下定义:
#define INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46
如果len太小,无法容纳表达格式结果(包括终止的空字符),则返回一个空指针,并置errno为ENOSPC.
函数inet_ntop的参数strptr不能是个空指针,调用者必须为目标分配内存并指定大小。成功时,此指针即函数的返回值。