【问题标题】:How can ping website from android to get average time of server response.如何从 android ping 网站以获取服务器响应的平均时间。
【发布时间】:2012-09-21 15:02:46
【问题描述】:

我正在制作一个可以从 android 应用程序获取 ping 响应时间的 android 应用程序。 我已经在 windows 环境下完成了,但是当我把它带到 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();

【问题讨论】:

标签: android ping


【解决方案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(以复制 windows 行为)。否则它将永远 ping 通。

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

祝你好运。

【讨论】:

  • 我怎么configure adb to redirect for ping reply to the emulator .- @Luis
  • 我快速浏览了 adb 文档,看起来你做不到。您只能对 TCP 和 UDP 协议执行此操作。对于 ping,它还需要 ICMP 协议。仅供参考,可以使用命令“adb -e forward”重定向 tcp 和 udp。
猜你喜欢
  • 2012-04-10
  • 2011-06-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
相关资源
最近更新 更多