isIPv4LiteralAddress有误报结果?

Hus*_*yin 3 java ipv4

当我尝试检查字符串是否是IPv4地址时,我发现该函数给出了以下结果.

144.122.1 - >真的

144.122.1.a - > false

144.122.1.333 - > false

知道为什么第一个是真的吗?

功能是: sun.net.util.IPAddressUtil.isIPv4LiteralAddress

pax*_*blo 7

你可以从源头本身看出他们为什么这样做:

当指定三部分地址时,最后一部分被解释为16位数量并放在网络地址的最右边两个字节中.这使得三部分地址格式便于将B类网络地址指定为128.net.host.

所以它看起来144.122.1等同于144.122.0.1.

关于文本IP地址部分数量的完整评论集如下:

当只给出一个部分时,该值直接存储在网络地址中,而不进行任何字节重新排列.

当提供两部分地址时,最后一部分被解释为24位数量并放在网络地址的最右边三个字节中.这使得两部分地址格式便于将A类网络地址指定为net.host.

当指定三部分地址时,最后一部分被解释为16位数量并放在网络地址的最右边两个字节中.这使得三部分地址格式便于将B类网络地址指定为128.net.host.

当指定四个部分时,每个部分被解释为一个数据字节,并从左到右分配给IPv4地址的四个字节.