Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种可能的方法可以利用Ping功能在Android上实现traceroute?_Java_Android_Networking_Ping_Traceroute - Fatal编程技术网

Java 有没有一种可能的方法可以利用Ping功能在Android上实现traceroute?

Java 有没有一种可能的方法可以利用Ping功能在Android上实现traceroute?,java,android,networking,ping,traceroute,Java,Android,Networking,Ping,Traceroute,我现在正在和我的朋友开发一个Android网络诊断应用程序(Java) 我们已经实现了Ping函数,现在希望使用Ping实现traceroute函数,这就是Windows cmd中发生的情况: 然后我尝试通过连续Ping来模拟traceroute过程: 为了解释这一点,我试图通过连续Ping相同的目标IP来模拟跟踪路由过程。每次我将ttl增加1,直到达到目标IP:,记录中间路由器的IP地址,然后打印出来 但是在Android上,我发现intermediate返回的ICMP不包含他们的IP地址信

我现在正在和我的朋友开发一个Android网络诊断应用程序(Java)

我们已经实现了Ping函数,现在希望使用Ping实现traceroute函数,这就是Windows cmd中发生的情况:

然后我尝试通过连续Ping来模拟traceroute过程:

为了解释这一点,我试图通过连续Ping相同的目标IP来模拟跟踪路由过程。每次我将ttl增加1,直到达到目标IP:,记录中间路由器的IP地址,然后打印出来

但是在Android上,我发现intermediate返回的ICMP不包含他们的IP地址信息: .

Android上的Ping命令是否有问题,或者可能是ICMP格式的问题?如何获取中间网关的IP地址?是否可以在Android上使用Ping实现traceroute?如果您有任何建议,我将不胜感激

这是我们非常原始版本的“Ping”部分:

    public String ping(String url) {
    String str = "";

    String tmp="";
    try {
        Process process = Runtime.getRuntime().exec(
                "ping -c 1 -t 1 " + url);
        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);
            tmp=reader.readLine();
            System.out.println(tmp);

        }
        reader.close();

        // body.append(output.toString()+"\n");
        str = output.toString();
        // Log.d(TAG, str);
    } catch (IOException e) {
        // body.append("Error\n");
        e.printStackTrace();
    }
    return str;
}

欢迎Momoom!请考虑把代码内嵌而不是做屏幕截图,这样我们就能更好地理解和查看它:对不起,伙计,我只能提供有限的部分。code@Momomoom试着做同样的事情,如果你找到了方法,请告诉我!非常感兴趣。我会继续找的,如果发现什么,我会回来报告。