2014-10-02 1 views
0

사용자가 제출 한 주소가 유효한 공용 IP (비 루프백, 비 로컬, 비 예약)인지 확인하고 싶습니다.주어진 ip가 공개 된 것인지 테스트하십시오.

그 목적을 위해, 나는 그 방법을 생각해 냈습니다. 그러나 이것이 충분한 지 또는 몇 가지 검사가 빠졌는지 궁금합니다.

는 자바 대답

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; 
} 

답변

0

많이하지 : 당신의 도움을 주셔서 감사합니다,하지만 IP 유효성 검사에 대한 접근 제공 : 무엇 WHOIS를 사용하는 방법에 대한 있습니까?

이렇게하면 사용되지 않는/개인 주소 목록을 작성하는 것을 극복하고 실제와 비교하여 확인할 수 있습니다. |

후이즈 192.168.0.1 : WHOIS는 많은 정보를 제공하기 때문에

, 나는 당신이 단지 같은 특정 항목에 확인하시기 grep NetName : NetName : 개인 주소 -CBLK-RFC1918-IANA-RESERVED

whois 80.85.32.1 | grep NetName : NetName : 80-RIPE

whois 1.1.0.1 | grep NetName : NetName : APNIC-1

모든 예약 된 주소는 인터넷 이름에 예약되어 있으므로 쉽게 벗어날 수 있습니다. 예외는 다음과 같은 테스트 넷입니다.

whois 192.0.2.1 | 그렙 네트 : 네트 : TEST-NET-1

및 멀티 캐스트 넷의 같은 :

후이즈 224.0.0.1 | grep NetName : NetName : MCAST-NET

따라서 회신 확인에는 세 가지 옵션으로 제한되어 있으므로 일치하는 주소가 공개되어 있지 않은 것으로 표시됩니다.

관련 문제