Вот сценарий... У меня есть таблица подсетей. (см. ниже) У меня есть IP-адрес. Я хотел бы узнать, в какой подсети находится ip-адрес, на основе поиска в таблице. Затем эта ассоциация будет использоваться для определения того, в каком месте находится пользователь. Это частное сетевое пространство, поэтому стандартный поиск по местоположению в Интернете не будет применяться. Какой был бы лучший подход? Нужно ли мне разбить ip-адрес на его числовые части и поразрядное сравнение со всеми подсетями.. или есть встроенные инструменты в Java API, которые могли бы облегчить мою жизнь для сравнения IP-адреса с маской подсети?
Я в основном ищу лучший способ сравнить ipaddress с заданной маской подсети и определить да, это совпадение, или нет. Это необязательно. Будут также оценены любые советы о том, как сохранить список и выполнить поиск с минимальными операциями.
В идеале я бы делал что-то похожее на это:
List subnetInfo = null;
subnetInfo = findSubnet('192.168.0.1'); //value null if nothing found
....
//return null if nothing found
List findSubnet(String ipaddress) {
List subnetDetails = null;
.... code here ...
return subnetDetails;
}
Таблица 1: Пример списка подсетей
dk-ballerup-gen-off-v411 10.172.80.0/21 NANR-denmark-ballerup-metallbuen66-ground-first-floors-incl-dhcp-(sr14585203)
ae-dubai-ofssl-gen-off-v410 10.172.88.0/24 NANR-arab-emirates-ofssl-iflex-general-office-v410-(sr12781477)
ru-stpetersburg-gen-off-v411 10.172.89.0/24 NANR-russia-stpetersburg-general-office-incl-dhcp (bsteinba)