투케이2K

540. (kotlin/코틀린) [유틸 파일] isPingInternetAvailable : Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인 본문

Kotlin

540. (kotlin/코틀린) [유틸 파일] isPingInternetAvailable : Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인

투케이2K 2025. 1. 8. 21:24

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : 유틸 파일 / Runtime / Ping

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [isPingInternetAvailable] : Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인
// -----------------------------------------------------------------------------------------
fun isPingInternetAvailable(): Boolean {

    /**
      * // -----------------------------------------
      * [isPingInternetAvailable 메소드 설명]
      * // -----------------------------------------
      * 1. Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인
      * // -----------------------------------------
      * 2. 호출 방법 : C_StateCheck.isPingInternetAvailable()
      * // -----------------------------------------
      * 3. 리턴 데이터 :
      *
      * ping 응답이 성공한 경우 true / 아니면 false
      * // -----------------------------------------
      */


    // [리턴 및 로그 변수 선언]
    var returnData = false
    var M_LOG = ""


    // [Ping 체크 필요 변수 선언]
    val runTime = Runtime.getRuntime()

    // ------------------------------------------------
    // [host 는 test 하고 싶은 주소 삽입]
    // ------------------------------------------------
    // [c = 패킷을 날릴 횟수 / W = 상대방이 응답을 주기까지 대기 시간 (Seconds) : 기본은 4초]
    // ------------------------------------------------
    val host = "google.com" // [Ping 체크 주소]
    val cmd = "ping -c 1 -W 5 $host" // [-c 1 은 반복 횟수를 1번만 날린다는 뜻]

    var proc: Process? = null // [exec 수행 주체]


    // [로직 처리 수행]
    try {
        proc = runTime.exec(cmd) // [커맨드 명령어 수행]

        proc.waitFor() // [커맨드 응답 대기]

        // ------------------------------------------------
        // [여기서 반환되는 ping 테스트의 결과 값은 0, 1, 2 중 하나]
        // ------------------------------------------------
        // [0 : 성공, 1 : fail, 2 : error]
        // ------------------------------------------------
        val result = proc.exitValue()

        if (result == 0) {
            returnData = true
            M_LOG = "[Success] :: Ping Check"
        } else {
            M_LOG = "[Error] :: Ping Check ($result)"
        }

    } catch (e: Exception) {
        e.printStackTrace()
        M_LOG = "[Exception] :: " + e.message.toString()
    }


    // [로그 출력 실시]
    // ===============================================================
    S_Log._D_("Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인", arrayOf(
        "M_LOG :: $M_LOG",
        "RETURN :: $returnData"
    ))
    // ===============================================================


    // [리턴 반환]
    return returnData
}

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.A_Intro$1.onClick]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 인터넷 사용 가능 여부 핑 체크 Start]
W///===========//: ================================================


D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_StateCheck.isPingInternetAvailable]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: Runtime Ping 핑 체크 방식을 통해 네트워크 사용 가능 상태 확인]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: [Success] :: Ping Check]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: true]
D///===========//: ================================================


W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.A_Intro$1.onClick]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 인터넷 사용 가능 여부 핑 체크 결과 확인 :: true]
W///===========//: ================================================

// --------------------------------------------------------------------------------------

 

반응형
Comments