Java
/**
* @return 0: success, 1: fail, 2: error
*/
public static int ping(@NonNull String host, int timeout) throws InterruptedException, IOException {
int res;
Runtime rt = Runtime.getRuntime();
Process process = rt.exec(String.format(Locale.US, "ping -c 1 -W %d %s", timeout, host));
// 0: 성공, 1: 실패, 2: 에러
res = process.waitFor();
// ~~
// shell 명령 출력 값 확인용입니다. 없어도 되요
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
Log.d(TAG, "cmd output:" + line);
}
return res;
}
Kotlin
companion object {
/**
* @return 0: success, 1: fail, 2: error
*/
fun ping(host: String, timeout: Int): Int {
val res: Int
val rt = Runtime.getRuntime()
val process = rt.exec(String.format("ping -c 1 -W %d %s", timeout, host));
// 0: 성공, 1: 실패, 2: 에러
res = process.waitFor()
// ~~
// shell 명령 출력 값 확인용입니다. 없어도 되요
val br = BufferedReader(InputStreamReader(process.inputStream))
br.lineSequence().forEach {line ->
Log.d(TAG, "cmd output:$line")
}
return res
}
}
위와 같이 하면 됩니다.
주의할 점은 waitFor에서 스레드가 멈추기 때문에 (Thread.sleep()과 같이) MainThread가 아닌 새로 생성한 Thread에서 호출해줘야합니다.
'소프트웨어 > 안드로이드' 카테고리의 다른 글
[Android] Windows 개발 소스를 Linux에서 빌드할 때 주의사항 (0) | 2020.06.16 |
---|---|
[Android] MVVM Anti Pattern (0) | 2020.05.14 |
[Logcat] 안드로이드 로그 최대 출력 가능 길이 (0) | 2020.04.24 |
[Android Studio/SQLScout ] SQLite DB 뷰어 플러그인 (0) | 2020.03.31 |
ADB Wi-Fi[와이파이/무선]으로 연결하는 방법 (0) | 2020.03.23 |