在<netinet/in.h>中有这两个宏的定义
#define INET_ADDRSTRLEN 16 #define INET6_ADDRSTRLEN 46-- INET_ADDRSTRLEN
这是32位ipv4地址,用10进制+句点表示时,所使用内存长度的最大值。
111.111.111.111 这是最大长度的一个例子,其中包括4组十进制整数,每组3个,三个句点,再加一个NULL符号,所以总共需要4*3+3+1=16个字节
-- INET6_ADDRSTRLEN
这是128位ipv6地址,用十六进制+冒号显示时,所使用内存长度的最大值
也支持兼容ipv4的兼容格式
非兼容格式:1111:1111:1111:1111:1111:1111:1111:1111,这是非兼容格式最大长度的一个例子,其中包括8组十六进制整数,每组4个,七个冒号,再加一个NULL结束符,所以总共需要8*4+7+1=40个字节
兼容格式:1111:1111:1111:1111:1111:1111:111.111.111.111,这是兼容格式最大长度的一个例子,其中包括6组十六进制整数,每组4个,六个冒号,再加一组ipv4地址,一个NULL结束符,所以总共需要8*4+6+16=46个字节