2012-01-05 35 views
3

我的代码是在这里我从中得到结果为真或假的Weather它ping命令我还是不提主机,如何计算在JSP中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主机如果它不是平的成功完全来回在第一时间和最大无计数平将是10

的希望您的建议提前

+0

定义了“reachable”,它在哪里设置?另外,我已经修改了格式,但是在这里还有其他一些问题,例如,第二个if语句上的'''是否意外?如果不是,那么你不需要'if'语句。 – 2012-01-05 06:39:05

+0

我已经编辑它的代码现在其优良 – 2012-01-05 06:49:00

+0

我认为这可能是你想要的,总是最好的,以确保代码是准确的,以获得最佳的响应!希望我的回答是有道理的。 – 2012-01-05 06:53:05

回答

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++; 
    } 
} 

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

3

假设address.isReachable(10000))是做

谢谢荷兰国际集团的平,并返回true或false,那么你想是这样的:

int counter = 0; 

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

// now counter contains the number of attempts 

我想你会做得很好找编程一本好书,拿出类似这应该不是一个解决方案是你需要问的问题。

0

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

你最好在一个servlet上写LaceySnr的code,并在单独的线程中产生该代码。

相关问题