2012-03-28 32 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