我的代码在这里,我得到的结果是真的还是假的,它可以直接映射到我提到的主机,
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主机的次数
希望得到你的建议
先谢谢
答案 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并在单独的线程上生成该代码。