2012-09-30 48 views
2

我正在制作一个android应用程序,它可以从android应用程序获取ping响应时间。 我已经完成了与Windows环境,但当我把它放到Android设备上,设备无法发送任何响应。我怎么解决这个问题。?如何从android平台获取服务器响应的平均时间。

在此先感谢。 这里是我的代码

    String ip="www.google.com"; String pingResult=" "; 
       String pingCmd="ping"+ip; 

       Runtime r=Runtime.getRuntime(); 
       Process p=r.exec(pingCmd); 
       BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream())); 
       String inputLine; 
       Toast.makeText(getApplicationContext(), "Going loop", 1).show(); 
       while((inputLine=in.readLine())!=null) 
       { 
        pingResult=inputLine; 
       } 
       Toast.makeText(getApplicationContext(),pingResult, 1).show(); 
       in.close(); 
+0

看看这个问题,http://stackoverflow.com/questions/2786720/android-service-ping-url?rq=1 – Austin

回答

1

你的,如果你改变线路将正常工作:

Process p=r.exec(pingCmd); 

到:

Process p=r.exec(new String[] {"ping", "-c 4", "www.google.pt"}); 

的原因是:

-Android exec命令期望一个String []而不是String。

--c参数需要将ping的数量限制为4(以复制窗口行为)。否则,它会永远平。

最后,这只适用于真实的设备。要让它在模拟器中工作,您需要配置adb以将ping重播重定向到模拟器。

祝你好运。

+0

如何配置adb重定向为ping回复模拟器.- @ Luis –

+0

我快速查看了adb文档,看起来你不能这样做。你只能使用TCP和UDP协议。对于ping,它也需要ICMP协议。只是为了您的信息,可以使用命令“adb -e forward”重定向tcp和udp。 – Luis