Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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
如何测量wifi网络中的延迟java android_Java_Android_Wifi_Android Wifi_Latency - Fatal编程技术网

如何测量wifi网络中的延迟java android

如何测量wifi网络中的延迟java android,java,android,wifi,android-wifi,latency,Java,Android,Wifi,Android Wifi,Latency,我正在开发一个移动应用程序,我需要一些参数来实现算法,我不知道如何测量wifi网络中的延迟。有些人说使用ping,但我不知道如何实现这一点 这是我的第一个问题,我正在学习。 谢谢。请看一看,可能是您想要的 您可能希望尝试以下代码示例来测量执行某项操作的时间 String host = "172.16.0.2"; int timeout = 3000; long beforeTime = System.currentTimeMillis(); reachable = InetAddress.ge

我正在开发一个移动应用程序,我需要一些参数来实现算法,我不知道如何测量wifi网络中的延迟。有些人说使用ping,但我不知道如何实现这一点

这是我的第一个问题,我正在学习。 谢谢。

请看一看,可能是您想要的

您可能希望尝试以下代码示例来测量执行某项操作的时间

String host = "172.16.0.2";
int timeout = 3000;
long beforeTime = System.currentTimeMillis();
reachable =  InetAddress.getByName(host).isReachable(timeout);
long afterTime = System.currentTimeMillis();
long timeDifference = afterTime - beforeTime;

以下是我自己的实现,希望能有所帮助:

/*
Returns the latency to a given server in mili-seconds by issuing a ping command.
system will issue NUMBER_OF_PACKTETS ICMP Echo Request packet each having size of 56 bytes
every second, and returns the avg latency of them.
Returns 0 when there is no connection
 */
public double getLatency(String ipAddress){
    String pingCommand = "/system/bin/ping -c " + NUMBER_OF_PACKTETS + " " + ipAddress;
    String inputLine = "";
    double avgRtt = 0;

    try {
        // execute the command on the environment interface
        Process process = Runtime.getRuntime().exec(pingCommand);
        // gets the input stream to get the output of the executed command
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        inputLine = bufferedReader.readLine();
        while ((inputLine != null)) {
            if (inputLine.length() > 0 && inputLine.contains("avg")) {  // when we get to the last line of executed ping command
                break;
            }
            inputLine = bufferedReader.readLine();
        }
    }
    catch (IOException e){
        Log.v(DEBUG_TAG, "getLatency: EXCEPTION");
        e.printStackTrace();
    }

    // Extracting the average round trip time from the inputLine string
    String afterEqual = inputLine.substring(inputLine.indexOf("="), inputLine.length()).trim();
    String afterFirstSlash = afterEqual.substring(afterEqual.indexOf('/') + 1, afterEqual.length()).trim();
    String strAvgRtt = afterFirstSlash.substring(0, afterFirstSlash.indexOf('/'));
    avgRtt = Double.valueOf(strAvgRtt);

    return avgRtt;
}

发布到目前为止您已经尝试过的内容。这必须在单独的线程上完成,因为网络执行不能在主线程上完成。