5

質問するのはこれが初めてなので、私の間違いをお許しください。

Android Play ストアで入手できるこのアプリのような traceroute 機能を実装したいと考えています。

ビジュアルTracertPro

トレースルート

traceroute google.comWindowsでCMDを入力すると、使用されているすべての中間IPが表示されることを知っています。

今私が試したこと。

コマンドを使用してみますtracerouteが、Androidはtracerouteルート化されたデバイスのみをサポートしていません。

Process process =Runtime.getRuntime().exec("traceroute yahoo.com");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int i;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((i = reader.read(buffer)) > 0)
    output.append(buffer, 0, i);
reader.close();
Log.d("*************", ""+output);

そのため、pingコマンドを使用して達成しようと考えましたが、成功しませんでした.pingコマンドを使用すると、必要に応じて、アプリの表示の上になく、google.comのIPのみが表示されます。

Process process = Runtime.getRuntime().exec("/system/bin/ping -t 1 -c 1 google.com");

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int i;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((i = reader.read(buffer)) > 0)
    output.append(buffer, 0, i);
reader.close();
Log.d("*************", ""+output);

これを達成する方法を教えてください。一部のリンクまたは一部のチュートリアルは非常に役立ちます。

よろしくお願いします。

4

2 に答える 2

4

busyboxユーティリティには traceroute が含まれていますこのYouTube チュートリアルに従って、電話をルート化せずにデバイスで busybox を実行できます。その後、投稿した最初のコード セグメントを使用して、アプリ内から traceroute をクエリできるようになります。もちろん、traceroute を呼び出すときに正しいパスを使用していることを確認する必要があります。

于 2013-04-04T07:05:50.597 に答える