2012-03-28 21 views
0

这是我的下面的代码,如果任何IPV6地址通过,我想捕获异常。任何想法如何在我的代码中完成?如何通过IPV6地址捕获异常

private static boolean validateAnIpAddress(String ipAddr) { 

    InetAddress address = null; 
    boolean isIPv4; 

     try { 
      address = InetAddress.getByName(ipAddr); 
      isIPv4 = address.getHostAddress().equals(ipAddr) && address instanceof Inet4Address; 
     } catch (UnknownHostException e) { 
      getLogger().log(LogLevel.ERROR, e.getMessage()); 
      //return false; 
      isIPv4 = false; 
     } 

     return isIPv4; 

    } 
+0

你能否澄清?您是否只想接受IPv4地址并拒绝其他所有内容? – 2012-03-28 18:44:29

+0

是的,但如果有任何IPv6地址通过,那么我想使用记录器进行登录。所以这行'isIPv4 = address.getHostAddress()。equals(ipAddr)&& address instanceof Inet4Address;'只检查IPV4地址是否正确? – ferhan 2012-03-28 18:46:21

+0

为什么有人想在新程序中拒绝IPv6地址?我们在2012年,而不是在1992年... – glglgl 2012-04-03 07:42:17

回答

0
try 
{ 
    address = InetAddress.getByName(ipAddr); 

    boolean isIPv6 = address instanceof Inet6Address; 
    if (isIPv6) 
     throw new UnknownHostException("IPv6 Address"); 

    isIPv4 = address.getHostAddress().equals(ipAddr) && address instanceof Inet4Address; 
} 

通过检查addressInet6Address类型,你可以抛出异常的try块内,因此触发您的catch块。

+0

好的。所以这意味着这行'isIPv4 = address.getHostAddress()。equals(ipAddr)&& addressof instanceof Inet4Address;'仅用于检查IPv4地址是否正确?这条线的任何其他用途? – ferhan 2012-03-28 18:51:57

+0

第一部分检查IP地址是否有效,第二部分检查是否为IPv4地址。 – 2012-03-28 18:54:02

+0

所以通过这一行'isIPv4 = address.getHostAddress()。equals(ipAddr)&& address instanceof Inet4Address;'它检查IPv4地址和这一行'isIPv6 = address instanceof Inet6Address'是为了检查IPv6地址是否正确? – ferhan 2012-03-28 19:22:22