swift获取热点Gateway地址
在网上搜了很多文章,给出的都是连接Wi-Fi后如何获取本机IP:
// 获取本机Wi-Fi IP
func getWIFIIP() -> String? {var address: String?var ifaddr: UnsafeMutablePointer<ifaddrs>? = nilguard 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.pointeelet addrFamily = interface.ifa_addr.pointee.sa_familyif addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {let name = String(cString: interface.ifa_name)if name == "en0" {var addr = interface.ifa_addr.pointeevar 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}
获取路由器IP方式如下:
class NWPathMonitor官方解释:
An observer that you use to monitor and react to network changes.
官方文档
首先引入Network库
// 监听所有网络类型的状态
let monitor = NWPathMonitor()
// 监听特定网络类型状态,主要就是wifi和cellular
let monitor = NWPathMonitor(requiredInterfaceType: .wifi)
// 判断当前是否正在使用某种网络
let ret = monitor.currentPath.usesInterfaceType(.wifi)
// 获取热点Gatewayfunc getGatewayAddr() {// 监听Wi-Fi是否连接let monitor = NWPathMonitor(requiredInterfaceType: .wifi)// 连上Wi-Fi后获取IPmonitor.pathUpdateHandler = { path inif path.status == .satisfied {let endpoint = String(describing: path.gateways[0])self.gatewayAddr = endpoint.components(separatedBy: (":"))[0]print("gatewayAddr: \(self.gatewayAddr)")}}// Starts monitoring path changes, and sets a queue on which to deliver path events.monitor.start(queue: DispatchQueue(label: "get gateway successed"))}
很多东西官方文档都有说明,中文互联网iOS的博客确实不好找,还是得好好学英语。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
