Pingar elemento na rede

Srs,

Estou desenvolvendo um software que se conecta a varios equipamentos na rede, porem antes de tentar conectar preciso verificar se o elemento esta gerenciado, ou seja, pingando, estou testando o codigo abaixo:

			try{
				String host = "11.141.13.55";
				if(InetAddress.getByName(host).isReachable(5000)){
					System.out.println("Ping OK");
				}
			} catch (Exception e){
				e.printStackTrace();
			}
					

O que acontece é o seguinte, o ip que eu estou passando não pinga, porem o teste passa como ok, alguem sabe o porque, ja tentei com outos ips também que não estao na rede.

att

Jovem,

Faça um teste: pinga pelo DOS nos ip’s utilizados como teste. Eu executei aqui e funcionou sem problemas.

Justamente,

Eu ja testei, no dos nao pinga o ip invalido, porem no programa ele passa no testes

Eu não creio que ele passe no teste… pelo que vi, ele não trata um resultado negativo.

Voce colocou o teste de PING no try…
sugiro que voce coloque um if else.
ou seja, o teste que voce colocou pergunta e volta ok… coloca outro, onde, se retornar falso, vc seta como NAO OK.

	try{
		String host = "11.141.13.55";
		if(InetAddress.getByName(host).isReachable(5000)){
			System.out.println("Ping OK");
		}else{
			System.out.println("Ping não OK");
		}
	} catch (Exception e){
		e.printStackTrace();
	}

Rafael,

Como assim tratar o resultado negativo, é simples e lógico, se é true imprime o resultado e se é false não imprime ou seja não entra no if. Quanto ao uso do try/catch já estou usando.

att,

Paulo

realmente isto é lógico…
mas eu pensei em algo, posso ate estar muito enganado, mas olha o seu try…
se entrar no try e não tiver resposta alguma, que sim ou que nao… ou se nao tiver nada, como é o caso atual…
como ele entrará no catch???

flw.

Cara, ele ja esta entrando no try/catch, e caso seja lançada alguma exception que entrará no bloco catch. O detalhe é que sempre tá retornando true no teste do if, mesmo com um ip inválido. O teste de ping não é feito no try/catch mas sim no if. So para reforçar nem precisa de try/catch o método que eu estou utlizando não lança excpetions.

Só uma correção, o método lança excpetions.

Ele ta imprimindo ok sempre? mesmo com IPs inexistentes?

eu testei aqui e não imprimiu nada com IP falso… qdo eu coloquei o else, imprimiu o não ok.

ou seja, ele nao acusou sempre true aqui nao…

cara, deve haver algum jeito de saber a mensagem ICMP que ele retorna do ping… aí vc analisaria pra saber o que realmente ocorre…
nuca mexi com essa questao de IPs aqui por Java nao, talvez eu esteja confundindo mais… ^^

de qualquer maneira, ficou a tentativa…

Ab’s