현재 IP 가져오기

iOS/Tip 2016. 11. 29. 16:13
반응형

현재(Local) IP 가져오기

http://stackoverflow.com/questions/30748480/swift-get-devices-ip-address 참조


먼저 #import <ifaddrs.h>를 추가해주고 나서

#import <ifaddrs.h>

다음 함수를 작성한다.

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)
            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
}

그리고 나서 다음과 같이 사용하면 된다.

if let currentIPAddress = getWiFiAddress() {
    print(currentIPAddress)
}



반응형

'iOS > Tip' 카테고리의 다른 글

JavaScript to Native  (0) 2016.12.21
Autolayout 우선순위  (0) 2016.12.14
URLSession 사용시 참고  (0) 2016.12.08
메모리 정보 가져오기  (0) 2016.11.30
Cookies 저장과 값 읽기  (0) 2016.11.28
UIView, UIWebView 캡쳐하기  (0) 2016.11.04
TextView, TextField에 메뉴 추가 하기  (0) 2016.10.14
아이폰 개발 기준 해상도  (1) 2016.10.14
Posted by 까칠코더
,