Socket - demora na conexão quando SERVER desligado

3 respostas
rafaelSaqueli

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.

3 Respostas

E

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.

rmendes08

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.

E

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).

Criado 10 de novembro de 2009
Ultima resposta 10 de nov. de 2009
Respostas 3
Participantes 3