ipv6 压缩 java_Java IPv6 怎么支持00压缩

Java 本身的API对于ipv6的支持并不够。

一般情况下我们用Java的API解析,输出IP地址是:2300:0:0:0:0:0:0:1 而不是:2300::1

但是参照RFC5952,ipv6格式的地址表示是:

处理16-bit 字段中的前导零

前导零不允许出现。例如,2001:0db8::0001是不能接受的,必须表示为2001:db8::1。一个16 -位0000字段必须表示为0。

“::”使用,ip地址要尽可能的缩短

例如,2001:db8:0:0:0:0:2:1必须缩短为2001:db8::2:1。同样,2001:db8::0:1也不能接受,因为符号“::”本可以用于生成更短的表示2001:db8::1。

处理一个16-bit 0字段

符号“::”不能仅用于缩短一个16-bit 0字段。例如,2001:db8:0:1:1:1:1:1是正确的,但是2001:db8::1:1:1:1:1是不正确的。

“::”位置的选择

“::” 只能出现一次,所以有时需要做出选择,

例如: 2001:0:0:1:0:0:0:1, 需要缩短最长的连续0, 缩短为: 2001:0:0:1::1)。

当连续0的数量相等时,缩短第一个连续0,

例如: 2001:db8:0:0:1:0:0:1 缩短为 2001:db8::1:0:0:1

小写字母表示

IPv6地址中的字符“a”、“b”、“c”、“d”、“e”和“f”, 必须用小写字母表示。

基于上面的标准,java自身提供的API并不能满足要求。

需要使用google提供的API.

使用方法:

添加Maven依赖

com.googlecode.java-ipv6

java-ipv6

0.17

代码示例

final IPv6Address iPv6Address = IPv6Address.fromString("fe80::226:2dff:fefa:cd1f");

final IPv6Address iPv4MappedIPv6Address = IPv6Address.fromString("::ffff:192.168.0.1");

详细的使用手册参见官网,本文只提供一种思路和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值