AndroidでAsyncTaskとしてPingユーティリティを実装しようとしています。以下は基本的に私のdoInBackground
の機能です。AndroidでPingタスクを実行するJava
mProcess = Runtime.getRuntime().exec("/system/bin/ping -c 6 " + url);
try {
InputStream in = mProcess.getInputStream();
OutputStream out = mProcess.getOutputStream();
byte[] buffer = new byte[ 1024 ];
int count;
while((count = in.read(buffer)) != -1){
mPOut.write(buffer, 0, count);
publishProgress();
Log.d("PING TASK", "PING.... PING....");
if(isCancelled()) {
return null;
}
}
out.close();
in.close();
mPOut.close();
mPIn.close();
} finally {
mProcess.destroy();
mProcess = null;
Log.d("PING TASK", "DONE");
}
} catch(IOException e) {
Log.d("PING TASK", e.getMessage());
}
return null;
意図したとおりに機能しますが、私はandroid.com
または8.8.8.8
のように、応答アドレスにpingを実行する場合にのみ。しかし、私がintel.com
またはlalalalalalalaandroid.com
(私はそれを正確にチェックしていない)のように、応答しないアドレスにpingを実行しない場合は、
PCでping -c 6 intel.com
を実行すると、少なくとも最初の行PING intel.com (13.91.95.74) 56(84) bytes of data.
またはPing request could not find host lalalalalalalaandroid.com Please check the name and try again.
が表示されます。
しかし、私はこれらのアプリケーションを私のアプリケーションで手に入れません...何か私はここで行方不明ですか?
Android搭載端末が特定のファイルシステムの場所だけでなく、「ping」ユーティリティを持つ必要はないことに注意してください。 – CommonsWare
私は知っている、これは現時点では問題ではない。私はまあまあまあまあです。 – MadClown
PCの代わりに 'adb shell'を介してコマンドを実行すると(別のping実装を実行する可能性があります)、あなたは何を得ますか? – adelphus