Daê galera, Tô com um problema que tá me incomodando..
preciso fazer uma aplicação que monitore vários pings de servidores e mandar um email caso dê problema
o problema é que estou tendo problemas em retornar os resultados, tipo estatística do ping.. tempo..etc...
eis o meu programa
publicstaticvoidmain(String[]args)throwsIOException{Processproc=Runtime.getRuntime().exec(newString[]{"ping","10.14.0.1"});//pega o retorno do comando para ler o resultadoInputStreamin=proc.getInputStream();byte[]buffer=newbyte[1024];intlen;Strings="";while((len=in.read(buffer))>=0){s+=""+len+"\n";System.out.println(s);}in.close();}
Sei que tem algum conteúdo sobre isso mas não consegui adequar à minha necessidade..
Obrigado pela ajuda desde já!!!
Caso você não precise, explicitamente, do retorno, use:
InetAddress address = Inet4Address.getByAddress(new byte[] {(byte)200,(byte)200,(byte)200,(byte)200}); //Recupera o endereço
boolean pingBemSucedido = address.isReachable(1000); //O parâmetro é o timeout.
Caso você precise mesmo do código que você postou, não esqueça de colocar um Thread.sleep, algo assim, para esperar o processo responder, OK ?
[]´s
magemelli
Deixe me entender, aquelas linhas fazem o trabalho do ping?
// Aqui seria o ip que eu quero lançar?InetAddressaddress=Inet4Address.getByAddress(newbyte[]{(byte)200,(byte)200,(byte)200,(byte)200});//Recupera o endereço booleanpingBemSucedido=address.isReachable(1000);//O parâmetro é o timeout.
assim eu nao necessito usar aqueles comandos que eu estava fazendo?
obrigado pela Ajuda
Alexandre_Saudate
magemelli:
Deixe me entender, aquelas linhas fazem o trabalho do ping?
// Aqui seria o ip que eu quero lançar? Isso!InetAddressaddress=Inet4Address.getByAddress(newbyte[]{(byte)200,(byte)200,(byte)200,(byte)200});//Recupera o endereço booleanpingBemSucedido=address.isReachable(1000);//O parâmetro é o timeout.
assim eu nao necessito usar aqueles comandos que eu estava fazendo?
obrigado pela Ajuda
Mais ou menos.. ele faz o ping e te retorna se o ping foi bem sucedido. Mas não retorna as estatísticas, por exemplo.
[]´s
kaique
Se as estatísticas do S.O. são suficientes para você, essa pode ser uma solução:
O problema aqui é que a string do comando provavelmente vai ser diferente, dependendo da sua plataforma.
[]'s.
maior_abandonado
o metodo isReachable aparentemente ta bgado… no passado pesquisando acho que encontrei bug relatado referente a ele, quando testei só funcionava com localhost, enquanto que com outros endereços eu só conseguia piingar pelo dos…
uma alternativa seria pegar via runtime o retorno e analisar a string do retorno para obter as estatisticas… para o seu software continuar multiplataforma, você poderia pegar o system.getProperty, acho que os.name o nome da propriedade, ai se for windows poe o comando de um jeito, se não você faz de outro, etc… na hora de obter a string…etc…
magemelli
GALERA, VALEU MESMO, Todas as Dicas só acrescentaram no meu conhecimento e no meu software,
vou testar dessas maneiras e ver qual se adequa melhor a minha necessidade…
VALEW, no momento que terminar o programa, vou disponibilizar aqui… ou por msn…
V
vida486
Boa noite
Amigo a meses venho procurando uma aplicação tipo esta que voce menciona no portal
sera que teria a possibilidade de voce disponibilizar a mesma.
desde ja lhe agradeço a atenção
meu e-mail e [email removido]
V
Valdomp
Vc poderia enviar esta aplicação pro meu email?
H
haroflow
Opa!
Meio na gambiarra, tratando a string recebida na munheca mesmo, mas parece que funciona... Para quem quiser...
importjava.io.*;publicclassTeste{publicstaticvoidmain(String[]args)throwsIOException{Processproc=Runtime.getRuntime().exec(newString[]{"ping","www.facebook.com"});//pega o retorno do comando para ler o resultadoInputStreamin=proc.getInputStream();bytebuffer[]=newbyte[1024];while(in.read(buffer)>=0){Stringbuff=newString(buffer);if(buff.contains("TTL")){Stringbytes=buff.substring(buff.indexOf("bytes=")+6,buff.indexOf("tempo=")-1);Stringtempo=buff.substring(buff.indexOf("tempo=")+6,buff.indexOf("TTL=")-1);Stringttl=buff.substring(buff.indexOf("TTL=")+4);ttl=ttl.substring(0,buff.indexOf(" ")-1);System.out.println(">> Bytes = "+bytes+" | Tempo = "+tempo+" | TTL = "+ttl);}buffer=newbyte[1024];}in.close();}}