iOS 앱을 시작하기 전, 서버 API 등을 호출하기 전에 네트워크가 연결되어 있는지 확인해야 합니다.
Swift 코드로 확인해보자.

네트워크 연결 확인
소켓에 설정된 여러 플래그를 확인하여 네트워크 상태를 확인합니다.
소켓이란 간단히 말해서 네트워크 통신을 위한 창입니다.
5호선
sockAddress.sin_family = sa_family_t(AF_INET)
소켓 API에서 사용할 주소 구조인 소켓 주소 제품군을 지정합니다.
OF_INETIPv4 주소입니다. 시스템 환경 설정 > 네트워크 > 고급 > TCP/IP 창을 보면 네트워크에 IPv4 주소가 할당된 것을 볼 수 있습니다.
IPv6 연결 여부를 확인하고 싶다면 AF_INET6로 변경할 수 있습니다.

20행
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
먼저 kSCNetworkFlagsReachable 플래그에 대해 알아보세요.
이 플래그가 지정된 경우 네트워크 환경 구성안돼.
@constant kSCNetworkFlagsReachable
이 플래그는 현재 네트워크 구성을 사용하여 지정된 노드 이름 또는 주소에 도달할 수 있음을 나타냅니다.
21행
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
kSCNetworkFlagsConnectionRequired 플래그는 네트워크에 연결할 수 있지만 연결해야 함을 나타냅니다. 네트워크 연결 필요예
@constant kSCNetworkFlagsConnectionRequired
이 플래그는 현재 네트워크 구성을 사용하여 지정된 노드 이름 또는 주소에 도달할 수 있지만 먼저 연결을 설정해야 함을 나타냅니다. 예를 들어, 이 상태는 현재 활성 상태가 아니지만 대상 시스템에 대한 네트워크 트래픽을 처리할 수 있는 전화 접속 연결에 대해 반환됩니다.
요약하면 네트워크 환경이 구성되고 연결되어 있으면 새로운 연결이 필요하지 않으며 네트워크가 연결된 것으로 간주됩니다.
끝
원천 : iOS 앱 마이리틀유니버스