1. 程式人生 > >[iOS] get device ip address in swift

[iOS] get device ip address in swift

主程式:

if let addr = getWiFiAddress() {

let ip_addr_array = addr.components(separatedBy: “.”)

self.IpAddressFirst2 = ip_addr_array[0] + “.” + ip_addr_array[1]

print(“ip address:” + IpAddressFirst2)

        }

副程式:

// Return IP address of WiFi interface (en0) as a String, or `nil`

func getWiFiAddress() -> String

? {

var address : String?

// Get list of all interfaces on the local machine:

var ifaddr : UnsafeMutablePointer<ifaddrs>?

guard getifaddrs(&ifaddr) == 0 else { return nil }

guard let firstAddr = ifaddr else { return nil }

// For each interface …

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)

ifname == “en0” {

// Convert interface address to a human readable string:

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

getnameinfo(interface.ifa_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

}