有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java存储子网的最佳数据结构,用于将Ip地址与子网匹配

我有一个记录列表,每个记录中都有以下字段

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

对于每个传入的数据包,我必须读取客户机地址,并使用每个子网掩码来确定它属于哪个子网(从我的列表中),然后返回相应的对象

目前,我使用HashMap和网络地址作为密钥来存储记录。但问题是,如果一个Ip地址属于表中的多个子网,那么我必须选择一个具有最大CIDR前缀(最小子网)的子网,并且不能使用任何其他子网

例如,我有以下两项记录

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

那么Ip地址“128.30.20.1”应该总是选择第一条记录,因为它是一个比第二条更小的网络。Hashmap不能保证记录的顺序正确。 我的方法是以这样一种方式保存这些记录,即它们将始终处于这样一种顺序,即较小的网络始终处于初始状态

这个记录列表将被传递给其他一些应用程序,它们只是在列表中迭代,从0位置开始查找匹配项。(他们只是不想在自己的终端进行额外的处理。)

有谁能推荐一些java数据结构来实现这一点吗


共 (1) 个答案