私のアンドロイドデバイスからホストにicmp pingを実行する必要があります。私は往復時間を測定する必要があります。私はアンドロイドとjavaに堪能です。使用するライブラリはわかりません。 どうすればよいですか? 3G、Edge経由でも可能ですか?アンドロイドでicmp pingを実行する方法
答えて
おそらくisReachable
を使用したいと考えています - 詳細はAndroid docをご覧ください。しかし、明らかに一部のネットワークがICMPをブロックしています。あなたはこの問題の詳細を読むことができる投稿がありますhere。
[はい、あなたは、3G、エッジにpingを実行することができます(cygwinとandroid-ndkを使用して)ファイルをライブラリーを構築し、
を使用可能なhere
端末エミュレータのオープンソースコードを使用することができ、無線どんなあなたが接続している限り。唯一の制限は、エミュレータでは、ここを参照してくださいです: ここhttp://groups.google.com/group/android-developers/browse_thread/thread/8657506be6819297
である私のピング機能:
package com.namespace.router.api;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import android.util.Log;
public class Network {
private static final String TAG = "Network.java";
public static String pingError = null;
/**
* Ping a host and return an int value of 0 or 1 or 2 0=success, 1=fail, 2=error
*
* Does not work in Android emulator and also delay by '1' second if host not pingable
* In the Android emulator only ping to 127.0.0.1 works
*
* @param String host in dotted IP address format
* @return
* @throws IOException
* @throws InterruptedException
*/
public static int pingHost(String host) throws IOException, InterruptedException {
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("ping -c 1 " + host);
proc.waitFor();
int exit = proc.exitValue();
return exit;
}
public static String ping(String host) throws IOException, InterruptedException {
StringBuffer echo = new StringBuffer();
Runtime runtime = Runtime.getRuntime();
Log.v(TAG, "About to ping using runtime.exec");
Process proc = runtime.exec("ping -c 1 " + host);
proc.waitFor();
int exit = proc.exitValue();
if (exit == 0) {
InputStreamReader reader = new InputStreamReader(proc.getInputStream());
BufferedReader buffer = new BufferedReader(reader);
String line = "";
while ((line = buffer.readLine()) != null) {
echo.append(line + "\n");
}
return getPingStats(echo.toString());
} else if (exit == 1) {
pingError = "failed, exit = 1";
return null;
} else {
pingError = "error, exit = 2";
return null;
}
}
/**
* getPingStats interprets the text result of a Linux ping command
*
* Set pingError on error and return null
*
* http://en.wikipedia.org/wiki/Ping
*
* PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
* 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.251 ms
* 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.294 ms
* 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.295 ms
* 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.300 ms
*
* --- 127.0.0.1 ping statistics ---
* 4 packets transmitted, 4 received, 0% packet loss, time 0ms
* rtt min/avg/max/mdev = 0.251/0.285/0.300/0.019 ms
*
* PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
*
* --- 192.168.0.2 ping statistics ---
* 1 packets transmitted, 0 received, 100% packet loss, time 0ms
*
* # ping 321321.
* ping: unknown host 321321.
*
* 1. Check if output contains 0% packet loss : Branch to success -> Get stats
* 2. Check if output contains 100% packet loss : Branch to fail -> No stats
* 3. Check if output contains 25% packet loss : Branch to partial success -> Get stats
* 4. Check if output contains "unknown host"
*
* @param s
*/
public static String getPingStats(String s) {
if (s.contains("0% packet loss")) {
int start = s.indexOf("/mdev = ");
int end = s.indexOf(" ms\n", start);
s = s.substring(start + 8, end);
String stats[] = s.split("/");
return stats[2];
} else if (s.contains("100% packet loss")) {
pingError = "100% packet loss";
return null;
} else if (s.contains("% packet loss")) {
pingError = "partial packet loss";
return null;
} else if (s.contains("unknown host")) {
pingError = "unknown host";
return null;
} else {
pingError = "unknown error in getPingStats";
return null;
}
}
}
ping(8.8.8.8)は常に失敗します – danarj
samsung s3 4.2.2および他の4.2.2デバイスでは動作しません!! –
は、一致する文字列で注意してください。.contains "100%パケット損失"と "0%パケット損失"は同じです。 –
- 1. Android ICMP ping
- 2. 大規模なICMP pingフェアユースポリシー
- 3. スレッドから複数のipsをpingするときのPython ICMP pingの実装ですか?
- 4. Windows上でBoost.Asioを使用する準同時ICMP ping
- 5. iOSでXamarinのpingを実行する方法
- 6. WindowsからLinuxシェルでpingを実行する方法
- 7. 反応ネイティブのICMP pingを実行するにはどうすればいいですか
- 8. luaでサーバにpingを実行
- 9. 私のホストにpingを実行し、ICMPアドレスを取得し、スクリプト内でhosts.allowを開きます。
- 10. PINGプログラムの作成時にICMPエコー応答を制限する
- 11. Microsoft Visioでpingを実行
- 12. SSISパッケージからpingを実行する方法は?
- 13. AndroidでPingタスクを実行するJava
- 14. Python3でサーバーにpingを実行する
- 15. コンピュータ名がダッシュで始まる場合、コンピュータにpingを実行する方法「 - 」
- 16. Androidで「ping」する方法
- 17. エラーpingコマンドを実行し
- 18. リモートサーバーからpingを実行する
- 19. ipアドレスにpingを実行する
- 20. pingパケットの送信方法
- 21. コンピュータが開いているかどうかを制御する方法ICMP(Ping)以外のLanからは?
- 22. アンドロイドでアプリを殺すとコードを実行する方法は?
- 23. MacOSでredisを実行する - redis-serverなしでpingを実行する
- 24. アンドロイドでアプリケーションをバックグラウンドで実行する方法は?
- 25. コマンドでdexファイルをアンドロイドで実行する方法は?
- 26. アンドロイドでバックグラウンドでフォアグラウンドサービスを実行する方法
- 27. 実行時にアンドロイドで実行時にEditTextのテキストを変更する方法
- 28. ドッカー - Ubuntuで - bashの:pingを実行:コマンド
- 29. トラフィックに関してICMPとSNMPのpingの比較?
- 30. ICMPとiPhone SDK
なぜあなたはICMP往復時間を測定する必要がありますか? – dbasnett