ping을 통해서 네트워크 연결 상태 체크하기 - 안드로이드 소스 코드에서
Runtime runTime = Runtime.getRuntime();
String host = "192.168.0.13";
String cmd = "ping -c 1 -W 10 "+host; //-c 1은 반복 횟수를 1번만 날린다는 뜻
Process proc = null;
try {
proc = runTime.exec(cmd);
} catch(IOException ie){
Log.d("runtime.exec()", ie.getMessage());
}
try {
proc.waitFor();
} catch(InterruptedException ie){
Log.d("proc.waitFor", ie.getMessage());
}
//여기서 반환되는 ping 테스트의 결과 값은 0, 1, 2 중 하나이다.
// 0 : 성공, 1 : fail, 2 : error이다.
int result = proc.exitValue();
if (result == 0) {
Log.d("ping test 결과", "네트워크 연결 상태 양호");
} else {
Log.d("ping test 결과", "연결되어 있지 않습니다.");
}
※ ping 명령어 옵션들
-4, -6 Force IPv4 or IPv6 hostname resolution
-c CNT Send only CNT pings
-s SIZE Send SIZE data bytes in packets (default=56)
-I iface/IP Use interface or IP address as source
-W timeout Seconds to wait for the first response (default:10)
(after all -c CNT packets are sent)
-w deadline Seconds until ping exits (default:infinite)
(can exit earlier with -c CNT)
-q Quiet, only displays output at start and when finished
안드로이드의 기반이 리눅스이기 때문에 DOS에서의 ping 명령어 옵션과는 약간의 차이가 있다.
-c 옵션은 ping을 날릴 횟수이다.
-W 옵션은 ping을 날린 이후 리턴 결과를 기다릴 timeout 시간 값이다. 연결 상태가 끊겼거나 연결 상태가 좋지 않을때 이 대기 시간 동안 응답이 없으면 연결 실패로 간주한다.
위의 옵션들은 대소문자를 구분한다.
따라서 ping -C xxx.xxx.x.x는 잘못된 사용법이다.
'Android' 카테고리의 다른 글
안드로이드 버전 3.0 이상에서 UI Thread에서 인터넷 연결시 runtime 에러 안 나게 하는 법 (0) | 2015.10.20 |
---|---|
HttpURLConnection에 대한 개괄적 개념 (0) | 2015.10.20 |
안드로이드 앱에서 구글, 네이버, 다음 검색 기능을 이용하여 웹 검색하기 (0) | 2015.10.19 |
안드로이드에서 현재 시간을 24시간제로 표시법(각종 시간 표시법) (0) | 2015.10.19 |
TextView에서 웹 페이지 링크 거는 법 (0) | 2015.10.16 |