Получение локального IP-адреса с iPhone, иногда это не работает, почему? - PullRequest
0 голосов
/ 24 октября 2019

Я хочу получить локальный IP-адрес iPhone, иногда он работает и показать этот адрес:

http://192.168.8.152/home.htm

Но иногда это не работает и показать этот адрес:

http://fd4c:d1a1:ee79:6400:f5dd:b93:12b7:2d42/home.htm

Что не так? Как это исправить?

Вот код Swift:

    func getIpAddress() -> String! {
        var address: String?
        var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
        if getifaddrs(&ifaddr) == 0 {
            var ptr = ifaddr
            while ptr != nil {
                defer { ptr = ptr?.pointee.ifa_next }

                let interface = ptr?.pointee
                let addrFamily = interface?.ifa_addr.pointee.sa_family
                if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
                    if let name: String = String(cString: (interface?.ifa_name)!), name == "en0" {
                        var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
                        getnameinfo(
                            interface?.ifa_addr,
                            socklen_t((interface?.ifa_addr.pointee.sa_len)!),
                            &hostname,
                            socklen_t(hostname.count),
                            nil,
                            socklen_t(0),
                            NI_NUMERICHOST
                        )
                        address = String(cString: hostname)
                    }
                }
            }
            freeifaddrs(ifaddr)
        }
        return address as? String ?? ""
    }

    @IBOutlet weak var lblUrl: UILabel! {
        didSet {
            sAddr = getIpAddress()
            var sLabel : String! = "http://"
            sLabel += sAddr
            sLabel += "/home.htm"
            lblUrl.text = sLabel
        }
    }
...