swift 取得局域网地址

   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

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值