问题
I am developing a mobile app, I need some parameters to implement the algorithm, and I do not know how to measure latency in a wifi network. Some people says using ping, but I do not know how implement this.
This is my first question, I am learning. Thank you.
回答1:
Please have a look at this answer it might be what you are after
you might want to try the following code sample to measure time to do something
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;
回答2:
Here is my own implementation, hope it helps:
/*
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;
}
来源:https://stackoverflow.com/questions/24119345/how-to-measure-latency-in-a-wifi-network-java-android