分配的IP恰好相同时的网络状态更改通知

时间:2019-02-19 20:28:16

标签: ios network-programming ip

我需要跟踪设备的网络IP环境是否已更改。

我看着Swift - Get device's WIFI IP Address

我不一定只想要WiFi IP地址,而是想要它能够通信的任何网络IP(包括蜂窝网络)。

但是,有一个极端的情况:当内部(非外部可路由)地址(如192.168.x.x)成为重复项,但位于不同子网中时。

为了清楚起见,房屋A的家庭网络给了我192.168.1.10;当我加入另一个家庭网络(例如,房屋B)时,房屋B的房屋网络也可以为我分配192.168.1.10。

在这种情况下,如何跟踪使用相同IP地址更改的环境?

1 个答案:

答案 0 :(得分:0)

如果您实际上并不在乎IP地址,我建议您使用NWPathMonitor-当可用的网络接口发生更改时,可以使用它来调用闭包。

我在Wi-Fi上使用了两个不同的SSID(设备在两个设备上都获得了相同的IP地址,因为这是两个SSID所在的相同网络)对它进行了测试,并且当我从一个移动到另一个时,它报告了路径更改。

class ViewController: UIViewController {

    private var pathMonitor: NWPathMonitor!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.pathMonitor = NWPathMonitor()

        self.pathMonitor.pathUpdateHandler = newPath

        self.pathMonitor.start(queue: DispatchQueue.global())
    }

    func newPath(_ newPath: NWPath) -> Void {
        print("Network path changed")       
        print("Is expensive - \(newPath.isExpensive)")
    }
}