getNetworkPrefixLength() 返回奇怪的子网掩码
以下代码:
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
System.out.println(address.getAddress() + "/" + address.getNetworkPrefixLength());
}
返回:
/fe80:0:0:0:11da:433a:412a:8c23%13/64
/192.168.1.107/128
我的子网掩码是 /24,而不是 /128。这是Java错误吗?
The following code:
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
System.out.println(address.getAddress() + "/" + address.getNetworkPrefixLength());
}
returns:
/fe80:0:0:0:11da:433a:412a:8c23%13/64
/192.168.1.107/128
My subnet mask is /24, not /128. Is it a Java bug?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
也许您遇到了这个错误: https://bugs.java.com/bugdatabase/view_bug? bug_id=6707289
(请停止投票...这只有 1 个谷歌距离...)
Maybe you hit this bug: https://bugs.java.com/bugdatabase/view_bug?bug_id=6707289
(Please stop to upvote ... this was only 1 google away ...)
至少对我来说没有任何意义...
/128
对于 IP4 网络无效(/32
应该是最高 em>(也是最没用的;))用单个地址来评估和描述网络,例如网络掩码255.255.255.255
)。/128
对于 IP6 来说是相同的,这是一种只有一个地址的网络(= 128 位固定前缀)。At least it doesn't make any sense to me...
/128
can't be valid for IP4 networks (/32
should be the highest (and most useless ;) ) value and describe a network with a single address, like a network mask255.255.255.255
)./128
would be the same for IP6, a network with just one address (= a 128 bit fixed prefix).添加到信息库,通过下面的 ipconfig 输出,我在 jdk 1.8/windows 8.1 上得到一些奇怪的前缀长度:
adding to the information base, with the ipconfig output below, i get some strange prexix lengths on jdk 1.8/windows 8.1: