Как подсчитать, сколько раз я пингую хост в JSP? - PullRequest
3 голосов
/ 05 января 2012

Мой код здесь, из которого я получаю результат, истинный или ложный, если он пингует хост, о котором я упоминал или нет,

  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());
  }

Я хочу посчитать, сколько раз он пытается пропинговать хост, если он не полностью пингуется с первого раза, и максимальное количество отсчетов для пинга будет 10

Надежды на ваши предложения

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 05 января 2012
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 мс.

3 голосов
/ 05 января 2012

Если предположить, что address.isReachable(10000)) выполняет пинг и возвращает истину или ложь, тогда вы хотите что-то вроде этого:

int counter = 0;

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

// now counter contains the number of attempts

Я думаю, что вы бы неплохо нашли хорошую книгу по программированию, чтобы найти решение, подобное этому, не должно быть чем-то, о чем вы должны спросить.

0 голосов
/ 05 января 2012

Сначала я бы спросил, почему этот код должен находиться в JSP. Запрос к этому JSP будет длиться вечно, чтобы ответить вам, если хост недоступен. Любое решение, использующее переменную-член для отслеживания счетчика, также будет проблематичным, поскольку оно столкнется с проблемами параллелизма.

Вам лучше написать код LaceySnr * на сервлете и порождать этот код в отдельном потоке.

...