Java 测试给定ip是否为公共ip?
我想检查用户提交的地址ip是否是有效的公共ip(非环回、非本地、非保留) 为此,我提出了这个方法,但我想知道这是否足够,或者我是否错过了一些测试 谢谢你的帮助:)Java 测试给定ip是否为公共ip?,java,ip,Java,Ip,我想检查用户提交的地址ip是否是有效的公共ip(非环回、非本地、非保留) 为此,我提出了这个方法,但我想知道这是否足够,或者我是否错过了一些测试 谢谢你的帮助:) java答案不多,但提供了一种IP验证检查方法: 用WHOIS怎么样 这将克服列出未使用/私有地址的问题,并且可以对照真实世界进行检查 由于WHOIS提供了大量信息,我建议您只查看特定项目,如: whois 192.168.0.1 | grep网络名: 网络名称:PRIVATE-ADDRESS-CBLK-RFC1918-IANA-RE
java答案不多,但提供了一种IP验证检查方法: 用WHOIS怎么样 这将克服列出未使用/私有地址的问题,并且可以对照真实世界进行检查 由于WHOIS提供了大量信息,我建议您只查看特定项目,如: whois 192.168.0.1 | grep网络名: 网络名称:PRIVATE-ADDRESS-CBLK-RFC1918-IANA-RESERVED whois 80.85.32.1 | grep网络名: 网名:80-100 whois 1.1.0.1 | grep网络名: 网络名称:APNIC-1 由于所有保留的地址都将保留在其网络名称上,因此这是一个简单的解决方法。 测试网络除外,如: whois 192.0.2.1 | grep网络名: 网络名称:TEST-NET-1 和多播网络类似: whois 224.0.0.1 | grep网络名: 网络名称:MCAST-NET 因此回复检查仅限于三个选项,通过匹配显示地址不公开
private boolean isValidPublicIp(String ip) {
try
{
Inet4Address address = (Inet4Address) InetAddress.getByAddress(ip.getBytes());
if (!address.isSiteLocalAddress() && !address.isAnyLocalAddress() && !address.isLinkLocalAddress() && !address.isLoopbackAddress() && !address.isMulticastAddress()) {
return true;
}
}
catch (UnknownHostException exception) {}
return false;
}