Socket - demora na conexão quando SERVER desligado

Eu estou fazendo a conexão da seguinte maneira:


conexaoSaida = new Socket("xxx.xxx.xxx.xxx", 6666); // passo o ip do servidor e a porta

Tudo funciona normal. O único problema acontece quando o servidor esta fora de operação, pois o programa fica muito tempo tentando conectar.
Qual a melhor forma de resolver esse problema?

Obrigado.

Aceite as coisas como são.

Você pode até alterar esse tempo de timeout mexendo em alguns parâmetros do sistema operacional (ou então usar java.nio para efetuar conexões assíncronas, mas aí seu programa fica extremamente complexo), mas normalmente não se mexe em tais parâmetros porque pode afetar o funcionamento de muitas outras coisas.

Você pode, por exemplo, deixar as operações lentas em uma thread, e atualizar a sua interface enquanto está esperando que as coisas ocorram.

Acho que não precisa de tanta complicação. O método connect da classe Socket tem uma sobrecarga que aceita um parâmetro timeout , do tipo int que é o tempo de timeout em milisegundos.

Ah, é verdade. ( Socket.connect)

Só lembrar que não é bom deixar um tempo de conexão muito baixo senão você pode ter problemas em conexões de rede ou servidores lentos. Teste antes de usar, e não passe 0 porque é considerado como “infinito” (que é o caso do construtor de Socket).