Urgente Buscar Ip java

Ola, alguem sabe se tem como criar um pequeno programa em java que faca uma varredura na rede localizando ips validos,ou seja,descobrir os ips dos computadores configurado em uma rede qualquer???Se alguem poder me ajudar agradeco…

Pra retornar o ip de um computador específico se faz assim:

/** * RETORNA O NÚMERO DE IP */ public static String localhost() { try { return InetAddress.getLocalHost().getHostAddress(); } catch(UnknownHostException e) { return new String("127.0.0.1"); } }

Espero ter ajudado!

nao nao isto eu ja sei fazer precisava de um programa onde eu informa-se uma faixa de ip ex:192.168.1.1 e ele me mostra-se todos os ips validos desta rede…Mas valeu a ajuda

Tem que ser em Java?

     Se for pra um projeto específico a gente dá mais uma pesquisada.

Se não for existe um que eu uso aqui:

http://baixaki.ig.com.br/download/Advanced-IP-Scanner.htm

dá uma olhada.

sim é pra integrar a um projeto que estou realizando,precisava ser em java para poder utilizar os fontes.Mas ja consegui desenvolver um o problema é o tempo que esta muito lento para uma busca que vai por exemplo da faixa 192.168.1.1 a 192.168.1.255.Mas obrigado novamente pela atencao.

Posso estar dizendo muita merda, mas em questão de tempo, faça threads. Cada thread scaneia uma determinada faixa, isso deve exigir um processamento maior, mas com mais velocidade.

Para saber se determinado ip existe, deve-se mandar pacotes a ele, e esperar uma resposta. Pense num ping.

sim ja pensei nisso tb em criar multiThread mas quando faco isso ele nao pega os ips esta passando tao rapido que nao da tempo de receber a resposta ja usei ate o sleep para diminuir mas mesmo assim nao vai,quando uso normalmente sem thread ele pega os ips corretamente mas colocou em mais de 1 thread ja da problema,nao pega mais os ips…

Bom vou postar o programa se alguem conseguir fazer essa varredura ficar mais rapida eu agradeco…
for(int i = 0 ; i < 255 ; i++){
String IP = “192.168.3.”+i ;
byte[] bit;
boolean conectado = false ;
try {
bit = InetAddress.getByName(IP).getAddress();
conectado = InetAddress.getByAddress(bit).isReachable(3000);
} catch (Exception e) {}
System.out.println(IP + " " + conectado );
}
Desde jeito sem thread ele funciona normalmente e consegue pegar todos os ips da minha rede,mas esta muito lento.Agradeco se alguem me ajudar.