ошибка при проверке isPublicIp для проверки IP в scala

Я пытаюсь написать функцию в 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 диапазонов IP-адресов, определенных списком "privateIPs", но, похоже, не работает для 5-го диапазона из 100. IP-адреса, где вместо того, чтобы отмечать как истинные, он отмечает как ложные.

Может ли кто-нибудь помочь мне с этой ошибкой здесь? Есть ли лучшая библиотека для обнаружения общедоступных IP-адресов scala?

Спасибо.

0 ответов

Другие вопросы по тегам