Swift开发技巧swift4.0

swift 获取手机SSID和BSSID以及IP地址

2018-07-10  本文已影响79人  279cb620c509

获取手机SSID和BSSID以及IP地址

import SystemConfiguration

import SystemConfiguration.CaptiveNetwork

extension NSObject{

    func GetIPAddresses() -> String? {

        var addresses = [String](https://www.jianshu.com/writer)

        var ifaddr : UnsafeMutablePointer? = nil

        if getifaddrs(&ifaddr) == 0 {

            var ptr = ifaddr

            while (ptr != nil) {

                let flags = Int32(ptr!.pointee.ifa_flags)

                var addr = ptr!.pointee.ifa_addr.pointee

                if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {

                    if addr.sa_family == UInt8(AF_INET) || addr.sa_family == UInt8(AF_INET6) {

                        var hostname = [CChar](repeating:%200,%20count:%20Int(NI_MAXHOST))

                        if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),nil, socklen_t(0), NI_NUMERICHOST) == 0) {

                            if let address = String(validatingUTF8:hostname) {

                                addresses.append(address)

                            }

                        }

                    }

                }

                ptr = ptr!.pointee.ifa_next

            }

            freeifaddrs(ifaddr)

        }

        return addresses.first

    }

    func getUsedSSID() -> (String,String) {

        let interfaces = CNCopySupportedInterfaces()

        var ssid = ""

        var bssid = ""

        if interfaces != nil {

            let interfacesArray = CFBridgingRetain(interfaces) as! Array

            if interfacesArray.count > 0 {

                let interfaceName = interfacesArray[0] as! CFString

                let ussafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)

                if (ussafeInterfaceData != nil) {

                    let interfaceData = ussafeInterfaceData as! Dictionary

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

                    bssid = interfaceData["BSSID"]! as! String

                }

            }

        }

        return (ssid,bssid)

    }

}
上一篇 下一篇

猜你喜欢

热点阅读