【发布时间】:2017-11-16 09:35:36
【问题描述】:
如何在不使用任何使用 Swift 3 编程语言的第三方库的情况下检索设备的 IP 地址?我使用以下代码来获取 IP 地址:
func getIPAddress() -> String? {
var address : String?
var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
defer { ptr = ptr.memory.ifa_next }
let interface = ptr.memory
let addrFamily = interface.ifa_addr.memory.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
if let name = String.fromCString(interface.ifa_name) where name == "en0" {
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
getnameinfo(interface.ifa_addr, socklen_t(interface.ifa_addr.memory.sa_len),
&hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST)
address = String.fromCString(hostname)
}
}
}
freeifaddrs(ifaddr)
}
return address
}
但是UnsafeMutablePointer<ifaddrs> 语法不起作用。它会引发语法错误。我需要导入一个框架来帮助我吗?
【问题讨论】:
-
这看起来像stackoverflow.com/a/30754194/1187415 中的代码,前段时间已针对 Swift 3 进行了更新。
-
标记为原创的问题与该问题不匹配。 “原始”问题只是询问 wifi 地址。
标签: ios iphone ipad swift3 ip-address