Notice
Recent Posts
Recent Comments
Link
투케이2K
564. (Android/Java) [Android 13] Runtime getRuntime exec 커맨드 명령어 사용해 ping 핑 네트워크 상태 체크 실시 본문
Android
564. (Android/Java) [Android 13] Runtime getRuntime exec 커맨드 명령어 사용해 ping 핑 네트워크 상태 체크 실시
투케이2K 2023. 5. 23. 23:02[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java
[소스 코드]
// -------------------------------------
// [로직 처리 실시]
// -------------------------------------
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
// [IP 주소 만들기]
String pingIp = "192.168.145.140";
// [핑을 날리면서 인터넷 사용 가능 체크]
Runtime runTime = Runtime.getRuntime();
// -----------------------------------------------------------
// TODO [디바이스 연결 상태는 빠르게 응답 받을 수 있으나, 모바일 응답은 대기 시간이 있어 타임 아웃 시간 늘려야 한다]
// [ip 는 test 하고 싶은 주소 삽입]
// [c = 패킷을 날릴 횟수]
// [W = 상대방이 응답을 주기까지 대기 시간 (Seconds)]
// [s = 전송 패킷 바이트 수]
// -----------------------------------------------------------
String cmd = "ping -c 1 -W 1 "+ pingIp;
// String cmd = "ping -s 10 -c 1 -W 1 "+ pingIp;
// String cmd = "ping -s 5 -c 1 "+ pingIp;
Process proc = null;
proc = runTime.exec(cmd);
proc.waitFor();
/**
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!proc.waitFor(30, TimeUnit.MILLISECONDS)) {
proc.destroy();
}
}
// */
// --------------------------------------------------------
// [여기서 반환되는 ping 테스트의 결과 값은 0, 1, 2 중 하나]
// [0 : 성공, 1 : fail, 2 : error]
// --------------------------------------------------------
int result = proc.exitValue();
switch (result){
case 0:
S_Log.w("Ping Test", "Ping Success : " + pingIp);
break;
case 1:
S_Log.e("Ping Test", "Ping Fail : " + pingIp);
break;
default:
S_Log.e("Ping Test", "Ping Error : " + pingIp);
break;
}
}
catch (Exception e){
S_Log.e("[ERROR] Ping (핑) 테스트", "Exception :: " + e.getMessage());
}
}
});
thread.start(); // [스레드 수행]
반응형
'Android' 카테고리의 다른 글
Comments