我该如何检查该ip地址是否属于私有类别?
if(isPrivateIPAddress(ipAddress)) {
//do something
}
如有任何建议,我们将不胜感激。
- 更新的答案**
private static boolean isPrivateIPAddress(String ipAddress) {
InetAddress ia = null;
try {
InetAddress ad = InetAddress.getByName(ipAddress);
byte[] ip = ad.getAddress();
ia = InetAddress.getByAddress(ip);
} catch (UnknownHostException e) {
e.printStackTrace();
return false;
}
return ia.isSiteLocalAddress();
}
我写了这个方法,它对我来说工作得很好。但是有没有什么情况下这个方法不起作用呢?我只是想确保它对每一种情况都起作用。
5条答案
按热度按时间gopyfrb31#
正确的方法是InetAddress.isSiteLocalAddress()。
检查InetAddress是否为站点本地地址的实用程序例程。
返回:一个布尔值,指示InetAddress是否是站点本地地址;或者如果地址不是站点本地单播地址则为假。
kzmpq1sx2#
首先,专用网络可以使用以下范围内的任何IPv4地址:
从www.example.com中的isSiteLocalAddress方法可以看出Inet4Address.java:
因此,案例B)172.16.0.0-172.31.255.255(1,048,576个IP地址)并不令人满意。但你可以很容易地编写自己的版本来判断一个地址是否是私有地址。以下是我的版本:
2hh7jdfx3#
这是一个快速黑客我生成测试我自己的地址.
编辑:这段代码还没有针对链接本地地址、localhost或为文档保留的地址块进行测试。前两种情况有返回它们的方法。最后一种情况在类的文档中没有引用。
gdrx4gfi4#
我用这个:
c9qzyr3d5#
范围为
因此我们可以使用以下代码: