关于IP地址
Boost.Asio中IP地址的表示
IP地址分为IPv4和IPv6两种,在Boost.Asio
中分别由ip::address_v4
和ip::address_v6
表示,并提供了ip::address
作为版本无关的IP地址表示。
IPv4
IPv4由4个8比特字节表示,在ip::address_v4
中提供了各种接口来支持IP地址的构造、转换、比较、判定等:
- 构造
ip::address_v4
可以从字节数组、长整型、字符串、其它address_v4
构造出IPv4的地址;
可以构造出任意、多播、loopback等地址;
可以根据地址和子网掩码构造多播地址; - 转换
可以将ip::address_v4
转换成字节数组、无符号长整型、字符串,可以从中获取子网掩码 - 比较
可以进行相等、大于、小于比较 - 判定
判定是否是未指定、多播、loopback、A/B/C类地址
注意loopback相当于把发送端和接收端连接到一起,多用来测试使用。
IPv6
IPv6由12个8比特字节表示,在ip::address_v6
中提供了各种接口来支持IP地址的构造、转换、比较、判定等;除了IPv6特有的内容,基本上与ip::address_v4
一样,并提供了与ip::address_v4
的互转换。
ip::address
ip::address
包裹了ip::address_v4
和ip::address_v6
,提供了一些共有接口供使用:
- 构造
从ip::address_v4
、ip::address_v6
、ip::address
、字符串构造IP地址 - 转换
转换成字符串 - 比较
- 判定
是否是未指定、多播、loopback地址,是IPv4还是IPv6