Я пытаюсь написать функцию в scala, которая может определить, является ли IP частным IP, ложным для всех остальных. Не могу найти хорошую библиотеку для этого, поэтому я вручную проверяю различные диапазоны IP-адресов, как показано ниже:
def isPrivateIp(ip: String) = {
val privateIPs = List ((2130706432L, 4278190080L), // [127.0.0.0 -> 255.0.0.0]
(3232235520L, 4294901760L), // [192.168.0.0 -> 255.255.0.0]
(2886729728L, 4293918720L), // [172.16.0.0 -> 255.240.0.0]
(167772160L, 4278190080L), // [10.0.0.0 -> 255.0.0.0]
(1681915904L, 1686110207L)) // [100.64.0.0 -> 100.127.255.255]
var res = false
val longIP = IPv4ToLong (ip)
for((a, b) <- privateIPs) {
if ((longIP & b) == a) {
res = true
}
}
res
}
Этот метод подходит для всех 4-х первых 4-х диапазонов IP-адресов, определенных перечислите «privateIPs», но, похоже, он не работает для 5-го диапазона 100. IP-адреса, где вместо пометки как true, помечаются как false.
Может кто-нибудь помочь мне с этой ошибкой здесь? Есть ли лучшая библиотека для scala обнаружения общедоступных c IP-адресов?
Спасибо.