| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/11/2008 14:43:11
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
Pessoal, é o seguinte:
Eu estou precisando fazer um sistema de Ping em um Hostname, da seguinte forma:
É passado o hostname, ele localiza o IP desse hostname, e executa 20 testes de ping... Exibindo todos os dados, da mesma forma que é feito em DOS.
Depois de executar os 20 pings, ele faz uma média do tempo de resposta e exibe o resultado em um textfield...
Caso não localize o hostname, exiba uma mensagem no textfield, informando que não foi encontrado...
Para exemplificar, ao efetuar o ping do "www.uol.com.br", gostaria que ele exibisse o resultado:
Disparando contra www.uol.com.br [200.221.2.45] com 32 bytes de dados:
Resposta de 200.221.2.45: bytes=32 tempo=57ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=28ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=85ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=60ms TTL=251
Estatísticas do Ping para 200.221.2.45:
Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 28ms, Máximo = 85ms, Média = 57ms
Isso parece ser bastante complicado... Dei uma olhada por ai sobre InetAddress, isReachable... mas fiquei bastante confuso sobre como pegar tempo de resposta, etc...
Poderia me dar uma luz??
This message was edited 2 times. Last update was at 13/11/2008 17:53:47
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/11/2008 15:12:40
|
padcoe
Virtual Machine Man
Membro desde: 25/10/2008 07:30:15
Mensagens: 528
Offline
|
Fala cara...tudo certinho?
Com a InetAdress, eu acredito que vc não vai conseguir pegar a resposta do servidor pq ele só vai vewrificar se o servidor está respondendo ou não.
A utilização é bem simples: InetAddress.getByName(IP_OU_HOST).isReachable(TEMPO_TIMEOUT)
O tempo de timeout é calculado em milisegundos!
Para vc pegar a resposta do servidor, sugiro que vc use as api Scanner e Runtime. Com a Runtime, vc vai trabalhar dessa maneira:
Runtime.getRuntime().exec("cmd /c ping localhost").getInputStream()
E o scanner vai receber esse inputstream que ele vai retornar:
Depois disso, vc cria um loop para ir lendo as linhas do scanner e vai jogando o resultado em um System.out.println(seu_atributo_string + "\n");.
Vai postando ai q eu te ajudo
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/11/2008 16:06:32
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
Tentei algo bem simplão aqui... Pra exibir o padrão, 4 respostas... Mas com certeza estou esquecendo algo, pois nada é exibido na saída...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/11/2008 16:13:42
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
Arrumei...
Mas a saída está saindo com muito espaço entre um teste e outro... Ex:
Disparando contra www.iwts.com.br [189.14.105.90] com 32 bytes de dados:
Resposta de 189.14.105.90: bytes=32 tempo=28ms TTL=251
Resposta de 189.14.105.90: bytes=32 tempo=25ms TTL=251
Resposta de 189.14.105.90: bytes=32 tempo=27ms TTL=251
Resposta de 189.14.105.90: bytes=32 tempo=24ms TTL=251
Estat¡sticas do Ping para 189.14.105.90:
Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda),
Aproximar um n£mero redondo de vezes em milissegundos:
M¡nimo = 24ms, M ximo = 28ms, M?dia = 26ms
Sem falar na acentuação que está incorreta... Alguma ideia?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/11/2008 16:58:00
|
padcoe
Virtual Machine Man
Membro desde: 25/10/2008 07:30:15
Mensagens: 528
Offline
|
Sobre acentuação não...no prompt, aparece a acentuação?
Do espaço, dá uma procurada nas quebras de linha do Java e de repente vc acha algo q te ajude
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2008 19:15:17
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
A acentuação eu corrigi na mão mesmo, substituindo os caracteres...
Agora a quebra de linha tá embaçado... Exemplo:
Dessa forma, ele sai tudo junto sem qubra de linha alguma, sai tudo na mesma linha...
E se eu usar um Println ao invés de somente print, ele sai com aquele monte de quebra de linha, ele não adiciona somente uma...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/11/2008 17:29:50
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
Galera, valeu pela ajuda, já resolvi!
Fiz o mesmo esquema de replace para adicionar as quebras de linha:
Agora minha saída fica:
Disparando contra www.uol.com.br [200.221.2.45] com 32 bytes de dados:
Resposta de 200.221.2.45: bytes=32 tempo=27ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=25ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=26ms TTL=251
Resposta de 200.221.2.45: bytes=32 tempo=27ms TTL=251
Estatísticas do Ping para 200.221.2.45:
Pacotes Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 25ms, Máximo = 27ms, Média = 26ms
Agora é só usar alguns substring() junto com isDigit() para separar os números de testes efetuados, média, etc...
Muito obrigado pela ajuda novamente!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/11/2008 17:56:52
|
chetspop
Entusiasta Java
Membro desde: 03/11/2008 23:04:17
Mensagens: 19
Offline
|
Galera.... Desculpa reviver o tópico... Mas encontrei outra dificuldade... Ainda estou iniciando em JAVA e tenho muitas dúvidas...
No meu comando de ping, eu coloquei o parametro "-t", para ele pingar infinitamente... Porém eu quero que, através de um botão, ele pare o ping...
Pelo DOS, basta pressionar Control-C que ele interrompe o ping e mostra as estatisticas... Mas eu tenho como fazer isso em java?
Ou seja, ao pressionar um botão, ele enviar o comando "Control-C" pra janela do DOS que está pingando?
|
|
|
 |
|
|
|
|