[swift] Reachability를 사용해 특정 도메인의 DNS 장애 유무 확인하기
DNS(Domain Name System) 서비스는 인터넷에서 도메인 이름을 IP 주소로 변환하는 역할을 합니다. 때때로 특정 도메인의 DNS 서버가 장애를 겪을 수 있습니다. iOS 앱에서 네트워크 연결 상태를 확인하고, 특정 도메인의 DNS 장애를 감지하는 방법을 살펴보겠습니다.
Reachability 라이브러리
네트워크 연결 상태를 확인하는데 도움이 되는 Reachability 라이브러리를 사용하겠습니다. 이 라이브러리를 사용하여 특정 도메인의 연결 가능 여부를 확인할 수 있습니다.
-
먼저, Reachability 클래스 파일을 프로젝트에 추가합니다. Reachability.swift 파일을 다운로드하여 프로젝트에 추가하거나, Carthage 혹은 CocoaPods를 통해 라이브러리를 설치할 수 있습니다.
-
Reachability 클래스를 사용하기 위해 다음과 같이 import 문을 추가합니다:
import Reachability
특정 도메인의 DNS 장애 확인
다음은 특정 도메인의 DNS 장애를 확인하는 예제 코드입니다.
import Reachability
func checkDNSStatus(for domain: String) -> Bool {
let reachability = try? Reachability(hostname: domain)
let status = reachability?.connection
if status == .unavailable {
return false
} else {
return true
}
}
let domainToCheck = "example.com"
let isDNSAvailable = checkDNSStatus(for: domainToCheck)
if isDNSAvailable {
print("DNS is available for \(domainToCheck)")
} else {
print("DNS is unavailable for \(domainToCheck)")
}
위의 코드는 주어진 도메인 이름의 DNS 연결 상태를 확인하고, DNS 서버의 장애 여부를 반환합니다. Reachability
클래스의 hostname
속성을 사용하여 도메인 이름을 전달하고, connection
속성을 사용하여 연결 가능한 상태인지 확인합니다.
참고 자료
- Reachability 라이브러리 GitHub 저장소: https://github.com/ashleymills/Reachability.swift
- Reachability 라이브러리 공식 문서: https://github.com/ashleymills/Reachability.swift/blob/master/Docs/ReadMe.md