我如何计算在JSP中ping主机的次数?

时间:2012-01-05 06:34:14

标签: java count ping

我的代码在这里,我得到的结果是真的还是假的,它可以直接映射到我提到的主机,

  try
  {
      InetAddress address = InetAddress.getByName("192.168.1.125");
      boolean reachable=address.isReachable(10000));
      out.print(PingHost.DrawTable());
      out.print("Is host reachable? " + reachable);
  }
  catch(Exception e)
  {
      out.print(e.printStackTrace());
  }

如果第一次没有完全ping成功并且ping的最大数量为10,那么我想计算它尝试ping主机的次数

希望得到你的建议

先谢谢

3 个答案:

答案 0 :(得分:5)

final static int MAX_PINGS = 10;
final static int TIMEOUT= 10000;
int countFailed = 0;

for (int i=0; i<MAX_PINGS; i++){
    if (address.isReachable(TIMEOUT)){
         System.out.println("Pinged successfully");
         break;
    }else{
         countFailed++;
    }
 }

注意:超时10000毫秒(10秒)太多了。我建议它应该在1000毫秒左右。

答案 1 :(得分:3)

假设address.isReachable(10000))正在执行ping,并返回true或false,那么你想要这样的东西:

int counter = 0;

do
{
    counter ++; 
    if(address.isReachable(10000))
    {
        break;
    }
}
while (counter < 10)

// now counter contains the number of attempts

我认为你最好找一本关于编程的好书,想出一个与此类似的解决方案不应该是你需要问的问题。

答案 2 :(得分:0)

我首先会问为什么这段代码需要驻留在JSP中。如果主机无法访问,对JSP的请求将永远回到您的身边。任何使用成员变量来跟踪计数的解决方案也会有问题,因为它会遇到并发问题。

最好在servlet上编写LaceySnr的code并在单独的线程上生成该代码。