투케이2K

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

Android

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

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

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

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

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

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

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






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

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

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


    // [리턴 및 로그 변수 선언]
    boolean returnData = false;
    String M_LOG = "";
    
    
    // [Ping 체크 필요 변수 선언]
    Runtime runTime = Runtime.getRuntime();

    // ------------------------------------------------
    // [host 는 test 하고 싶은 주소 삽입]
    // ------------------------------------------------
    // [c = 패킷을 날릴 횟수 / W = 상대방이 응답을 주기까지 대기 시간 (Seconds) : 기본은 4초]
    // ------------------------------------------------
    String host = "google.com"; // [Ping 체크 주소]
    String cmd = "ping -c 1 -W 5 " + host; // [-c 1 은 반복 횟수를 1번만 날린다는 뜻]
    
    Process proc = null; // [exec 수행 주체]
    
    
    // [로직 처리 수행]
    try {
        proc = runTime.exec(cmd); // [커맨드 명령어 수행]

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

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

        if (result == 0){
            returnData = true;
            M_LOG = "[Success] :: Ping Check";
        }
        else {
            M_LOG = "[Error] :: Ping Check (" + String.valueOf(result) + ")";
        }
    }
    catch (Exception e){
        e.printStackTrace();
        M_LOG = "[Exception] :: " + String.valueOf(e.getMessage());
    }


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


    // [리턴 반환]
    return returnData;
}

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






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

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


D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_StateCheck.isPingInternetAvailable(C_StateCheck.java:2541)]
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.javaproject.A_Intro$1.onClick(A_Intro.java:169)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 인터넷 사용 가능 여부 핑 체크 결과 확인 :: true]
W///===========//: ================================================

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

 

반응형
Comments