在<netinet/in.h>中有這兩個宏的定義code
#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個字節