Notice
Recent Posts
Recent Comments
Link
투케이2K
388. (ios/swift5) [유틸 파일] getWifiIpAddress : 현재 연결 된 와이파이 (wifi) ip 주소 확인 - ifaddrs 본문
IOS
388. (ios/swift5) [유틸 파일] getWifiIpAddress : 현재 연결 된 와이파이 (wifi) ip 주소 확인 - ifaddrs
투케이2K 2023. 12. 13. 18:19[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// -----------------------------------------------------------------------------------------
// MARK: - [현재 연결 된 와이파이 ip 주소 확인]
// -----------------------------------------------------------------------------------------
func getWifiIpAddress() -> String {
/*
// -----------------------------------------
[getWifiIpAddress 메소드 설명]
// -----------------------------------------
1. 현재 연결 된 와이파이 ip 주소 확인
// -----------------------------------------
2. 호출 방법 :
C_App().getWifiIpAddress()
// -----------------------------------------
4. 참고 설정 :
swift 브릿지 헤더에 import 추가 필요 : #include<ifaddrs.h>
// -----------------------------------------
*/
// [변수 선언]
var returnData = ""
var M_LOG = ""
// [로직 처리 실시]
if C_StateCheck().isWifiConnected() == true { // [와이파이 연결 상태 확인]
var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
defer { ptr = ptr?.pointee.ifa_next }
guard let interface = ptr?.pointee else { return "" }
let addrFamily = interface.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
// wifi = ["en0"]
// wired = ["en2", "en3", "en4"]
// cellular = ["pdp_ip0","pdp_ip1","pdp_ip2","pdp_ip3"]
let name: String = String(cString: (interface.ifa_name))
if name == "en0" || name == "en2" || name == "en3" || name == "en4" || name == "pdp_ip0" || name == "pdp_ip1" || name == "pdp_ip2" || name == "pdp_ip3" {
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)
returnData = String(cString: hostname)
}
}
else {
M_LOG = "[Error] :: AF_INET check error"
}
}
freeifaddrs(ifaddr)
if returnData != "" && returnData.count > 0 {
M_LOG = "[Success] :: Wifi Get Ip Address"
}
else {
M_LOG = "[Error] :: returnData Is Null"
}
}
else {
M_LOG = "[Error] :: getifaddrs check error"
}
}
else {
M_LOG = "[Error] :: Device Wifi Not Connected"
}
// [로그 출력 수행]
S_Log._D_(description: "현재 연결 된 와이파이 ip 주소 확인", data: [
"M_LOG :: \(M_LOG)",
"RETURN :: \(returnData)"
])
// [리턴 반환 수행]
return returnData
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments