Problemas para fechar socket

4 respostas
J

Bom dia pessoal,

tenho uma aplicação que inicia um ServerSocket na porta 1000 o mesmo não tem gui… logo para fechá-lo eu estou matando o processo, só que ao fazer isto o socket e a porta continua aberta (posso verificar usando o netstat -a), então ao executar novamente a palicação ocorre uma falha pois já existe um socket com porta 1000 e não consigo reabrí-lo com a mesma porta.

Gostaria de saber como faço para ao executar o .jar verificar se já existe um socket com a porta 1000, se já existir fechar o socket (matar mesmo) e iniciar novamente.

Até…

4 Respostas

ViniGodoy

Não faz. Esse comportamente é normal, e é o SO que cuida desse fechamento.

Na verdade, você deve setar a seguinte propriedade no seu server socket:

server.setReuseAddress(true);
J

antes de encerrar a aplicação, precisa esperar a thread do socket sair. Testa a conexão, e depois encerra a aplicação se não estiver mais conectado.

J

ok vinicius vou testar server.setReuseAddress(true); Mesmo não sabendo se vai funcionar pois estou falando do serversocket. Como faço pra verificar se a porta já está aberta?? (desculpe minha ignorância)


Julio, como eu faço uma verificação durante o ato de matar o processo?? Se a minha aplicação tivesse gui eu iria por um evento mas já que não tenho o que eu posso por?? Tem algum codigo que posso colocar no main??!

J

os eventos não dependem de gui. você pode sobrecarregar um método da classe socket, que lhe passe status de conexão, e então saber se pode ou não encerrar a aplicação.

Criado 27 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 4
Participantes 3