INET_ADDRSTRLEN 和 INET6_ADDRSTRLEN 长度

在<netinet/in.h>中有这两个宏的定义

#define INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46

INET_ADDRSTRLEN

  1. 这是32位ipv4地址,用10进制+句点表示时,所使用内存长度的最大值。
  2. 111.111.111.111 这是最大长度的一个例子,其中包括4组十进制整数,每组3个,三个句点,再加一个NULL符号,所以总共需要4*3+3+1=16个字节

INET6_ADDRSTRLEN

  1. 这是128位ipv6地址,用十六进制+冒号显示时,所使用内存长度的最大值
  2. 也支持兼容ipv4的兼容格式
  3. 非兼容格式:1111:1111:1111:1111:1111:1111:1111:1111,这是非兼容格式最大长度的一个例子,其中包括8组十六进制整数,每组4个,七个冒号,再加一个NULL结束符,所以总共需要8*4+7+1=40个字节
  4. 兼容格式:1111:1111:1111:1111:1111:1111:111.111.111.111,这是兼容格式最大长度的一个例子,其中包括6组十六进制整数,每组4个,六个冒号,再加一组ipv4地址,一个NULL结束符,所以总共需要8*4+6+16=46个字节
原文地址:https://www.cnblogs.com/shenlinken/p/10546269.html