2008-10-20 5 views
13

네트워크 수학을 목표로하고 이미 테스트 된 Java 라이브러리를 찾고 있습니다. 특히 공상적인 것, ips와 서브넷을 유지하는 것, 서브넷 마스크를 인쇄하거나 IP가 주어진 서브넷에 있는지 여부를 계산하는 것과 같은 일을하는 것.네트워크 수학을위한 훌륭한 Java 라이브러리

나 자신을 굴릴 수 있습니까? 아니면 이것을 위해 이미 강력한 라이브러리가 있습니까?

답변

5

우리는 Java IPv4 산술 라이브러리를 직접 개발했습니다. 여기를 참조하십시오 : http://tufar.com/ipcalculator/ BSD 라이센스가 적용됩니다.

4

org.apache.lenya.ac.IPRange에는 이러한 기능이있는 것으로 보입니다.

Apache Lenya 프로젝트는 오픈 소스 콘텐츠 관리 시스템입니다. Apache 라이센스를 사용하므로 필요한 코드 만 재사용 할 수 있습니다. (그러나 항상 그렇듯이 license을 읽고 인터넷에서 어떤 사람의 법적 조언을 신뢰하지 마십시오! :-)

+0

org.apache.lenya.ac.IPRange 확실하게하도록 수정 될 수는 IPv6 주소가 소정 서브넷에있는 경우 여기

은 테스트에 대한 일부 예시적인 코드 내 요구를 충족시켜 주셔서 감사합니다. 즉, Perl의 IP :: NetAddr과 같은 Java와 같은 좀 더 일반적인 것을 찾으려고했습니다. – perilandmishap

0

open-source IPAddress Java library은 ipv4/ipv6과의 변환 및 서브넷 검사와 같은 ip 주소 조작을 수행 할 수 있습니다. 면책 조항 : 저는 프로젝트 매니저입니다.

마스킹, 비트 별 또는 접두사 길이 설정, 접두어 블록 전환 주소, 서브넷 반복, 포함 확인, 주소 세그먼트 교체, 주소 반전, 서브넷 교차 계산, 하나의 서브넷 빼기 등의 다양한 네트워크 연산을 처리합니다. 다른 사람 및 다른 사람에게서.

String ipv6 = "2001:db8:57AB:0000:0000:0000:0000:0001"; 
    String ipv6subnet = "2001:db8::/32"; 
    String ipv4 = "1.2.3.4"; 
    try { 
     IPAddressString ipv6addrstr = new IPAddressString(ipv6); 
     IPAddressString ipv6addrsubnetstr = new IPAddressString(ipv6subnet); 
     IPAddressString ipv4addrstr = new IPAddressString(ipv4); 

     IPAddress ipv6addr = ipv6addrstr.toAddress(); 
     IPAddress ipv6addrsubnet = ipv6addrsubnetstr.toAddress(); 
     IPAddress ipv4mappedaddr = ipv4addrstr.toAddress().toIPv6(); 

     System.out.println(ipv6addrsubnet + " contains " + ipv6addr + ": " + ipv6addrsubnet.contains(ipv6addr)); // 
     System.out.println(ipv6addrsubnet + " contains " + ipv4mappedaddr + ": " + ipv6addrsubnet.contains(ipv4mappedaddr)); // 

    } catch(AddressStringException e) { 
     //e.getMessage has validation error 
    } 

출력 :

2001:db8::/32 contains 2001:db8:57ab::1 is true 
2001:db8::/32 contains ::ffff:102:304 is false