iOS中如何获取当前网络及其本地IP(Swift)

来源:互联网 发布:东方有线网络 编辑:程序博客网 时间:2024/06/05 09:03

···

//获取当前网络

    func getUsedSSID() -> String {        let interfaces = CNCopySupportedInterfaces()

        var ssid = ""

        if interfaces != nil {

            let interfacesArray =CFBridgingRetain(interfaces) as! Array<AnyObject>

            if interfacesArray.count >0 {

                let interfaceName = interfacesArray[0]as! CFString

                let ussafeInterfaceData =CNCopyCurrentNetworkInfo(interfaceName)

                if (ussafeInterfaceData !=nil) {

                    let interfaceData = ussafeInterfaceDataas! Dictionary<String,Any>

                    ssid = interfaceData["SSID"]!as! String

                }

            }

        }

        return ssid

    }

    //获取本机ip

    func getLocalIPAddressForCurrentWiFi() ->String? {

        var address: String?

        

        // get list of all interfaces on the local machine

        var ifaddr:UnsafeMutablePointer<ifaddrs>? = nil

        guard getifaddrs(&ifaddr) == 0 else {

            return nil

        }

        guard let firstAddr = ifaddr else {

            return nil

        }

        for ifptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {

            

            let interface = ifptr.pointee

            

            // Check for IPV4 or IPV6 interface

            let addrFamily = interface.ifa_addr.pointee.sa_family

            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {

                // Check interface name

                let name = String(cString: interface.ifa_name)

                if name == "en0" {

                    // Convert interface address to a human readable string

                    var addr = interface.ifa_addr.pointee

                    var hostName = [CChar](repeating:0, count: Int(NI_MAXHOST))

                    getnameinfo(&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

    }


···

阅读全文
0 0
原创粉丝点击