iOS - 检查掩码 ip 是否有效(在 ip 范围内)

标签 ios swift ip mask

所以我想弄清楚如何根据 ip 验证掩码 ip(在范围内?)。 我似乎无法像在 java 中那样快速找到工具:

How can I detect if an IP is in a network?

最佳答案

let ip = "192.168.2.0"
let net = "192.168.1.0"
let pref = 24

func convertIpToInt(_ ipAddress: String) -> Int? {
   var result = 0.0
   let ipAddressArray = ipAddress.components(separatedBy: ".").compactMap { 
      Double($0) }
   guard ipAddressArray.count == 4 else { return nil }
   for (index, element) in ipAddressArray.enumerated() {
      result += element * pow(256, Double(3 - index))
   }

   return Int(result) > 0 ? Int(result) : nil
}

let ipInt = convertIpToInt(ip)
let netInt = convertIpToInt(net)
let brkstInt = netInt! + Int(pow(2, Double(32-pref))) - 1


print(ipInt! >= netInt! && ipInt! <= brkstInt) // false

关于iOS - 检查掩码 ip 是否有效(在 ip 范围内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259279/

相关文章:

objective-c - 保留属性(property)何时释放?

ios - 如何调用这个完成处理程序?

swift - googlePlaces api 解析后给出错误的值

ios - 由于未捕获的异常 'FirebaseShutdown' 而终止应用程序,原因 : 'Firebase error

centos - 无法在 OVH 中向 vps 服务器添加额外的 IP

ruby-on-rails - Rails - 如何获取访问者的IP地址?

ios - 重新呈现 ViewController 不会重新初始化它

ios - 内容偏移量保持不变

ios - Swift FBSDK 问题 - 某些用户的 Facebook ID 为零

android - 在没有 WIFI 的 Android 中以编程方式在 USB Tethering 模式下的 PC 的 IP 地址