Problema que estou tendo e o seguinte:
Eu tenho uma lista de ips, em um array, neste array,
todos ips podem estar online, todos podem estar offline
ou alguns offline e outros online ok?
Estou fazendo um trecho de codigo, que conecta no ip, e na porta
especifica, se tiver, online me retorna, pong, senao, cai nas exceptions
e me determina o porque de nao esta conectando, e assim eu nao retorno
o pong. Mais veja o seguinte, como e um laco infinito, quando o ip
está online, ele interage rapidamente sobre esse ip e a porta, umas 20 vezes,
so que quando vai conectar na 21 vez, da Connection timed out: connect
como se fosse, mass atack …
E quando o ip nao existe cai na exception unkownexception certo?
So que demora, a dar a excecao, tem algum meio de aprimorar esse
codigo, so conectando e retornando rapidamente se o determinado
ip esta online, ou nao? sem demorar? Usar threads?
Alguem tem uma forma melhor de implementar isso?
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class PingPong {
public static void main(String[] args) {
Socket Socket = null;
String[] ipsValidos = { "200.111.255.236", "200.156.159.6"};
int valor = 0;
boolean loop = true;
while (loop) {
try {
if (ipsValidos.length == valor) valor = 0;
Socket = new Socket(ipsValidos[valor], 1000);
if (Socket.getSoTimeout() == 0) Socket.setSoTimeout(1);
} catch (UnknownHostException socketException) {
System.err.println(socketException.getMessage());
} catch (IOException socketException) {
System.err.println(socketException.getMessage());
}
valor++;
}
}
}
