1

각 레코드에 아래 필드가있는 레코드 목록이 있습니다. 각 서브넷 마스크 나 클라이언트 어드레스를 판독해야 들어오는 모든 패킷 서브넷과 IP 주소를 일치시키기 위해 서브넷을 저장하는 최상의 데이터 구조

<Network address of subnet, subnet mask, Object>. 

, AND 그것이 속하는 (내리스트에서) 어느 서브넷을 알아낼 오브젝트를 대응 돌아 간다.

현재 네트워크 주소가있는 레코드를 저장하는 키로 HashMap을 사용하고 있습니다. 그러나 문제는 IP 주소가 테이블의 둘 이상의 서브넷에 속한 경우 가장 큰 CIDR 접두사 (가장 작은 서브 네트워크)가있는 서브넷을 선택해야하며 다른 서브넷과 연결할 수 없다는 것입니다.

예를 들어, 나는 그것이 두 번째보다 작은 네트워크이기 때문에 그 다음 IP 주소를 "128.30.20.1"항상 첫 번째 레코드를 선택해야하는 두 개의 레코드

<128.30.20.0, 255.255.255.0, Object-1> 
<128.30.0.0, 255.255.0.0, Object-2> 

아래에 있습니다. Hashmap은 레코드의 순서가 정확하다는 것을 보증하지 않습니다. 내 접근 방식은 항상 작은 네트워크가 항상 시작되는 순서로 이러한 레코드를 유지하는 것입니다.

이 레코드 목록은 0 위치에서 시작하는 일치 항목을 찾기 위해 목록을 반복합니다. (그들은 단지 마지막에 여분의 프로세싱을 원하지 않는다.)

누구든지이 작업을 수행하기 위해 java에서 일부 데이터 구조를 제안 할 수 있습니까?

답변

관련 문제