Problemas com Socket

6 respostas
TeiTei

galera o meu sistema esta travando quando chamo o socket.accept(), alguem pdoe me explicar o pq?

6 Respostas

danilomunoz

Amigão, por favor coloque mais detalhes.

Por telepatia fica difícil.

Abraço!

Abdon

O metodo accept so ira funcionar “destravar” caso algum cliente esteje solicitando uma requisição. Em outras palavras ele esta esperando por um conexão de um cliente.

TeiTei

Crio um objeto do tipo ServerSocket e quando vou chamar o metodo accept() trava…

ServerSocket server = new ServerSocket(1099);

server.accept();

alguem pode me ajudar?

TeiTei

A entendi ele e um ouvinte ou seja deve exister dentro dele algo como um while(true)…mas assim eu preciso que outras coisas sejam executadas depois desse cara, ou seja eu preciso continuar a rodar meu programa e ao mesmo tempo continuar ouvindo alguem pode me ajudar?

KWill

O objeto ServerSocket é configurado por padrão para “bloquear” indefinidamente a execução da Thread que o chamou, até que seja feita alguma tentativa de conexão na porta ao qual ele está configurado para “ouvir” conexões. Depois que for estabelecida a conexão, o fluxo do seu código prossegue normalmente depois da chamada do método “accept()”. Se você precisa fazer alguma coisa enquanto escuta conexões, é melhor você ir estudar Threads em Java, conseguindo executar códigos de forma paralela.

Se você quiser que o método “accept()” de um objeto ServerSocket não “trave” indefinidamente após a chamada do método “accept()”, você pode cofigurar esse tempo de espera, usando o método “setSoTimeout(int timeout)” do mesmo objeto ServerSocket, passando o tempo de espera em milissegundos. Só que caso esse tempo de espera “estoure”, o método “accept()” desse objeto ServerSocket irá lançar exceção.

Inté.

ViniGodoy

A alternativa mais fácil é usar outra thread, como já foi explicado.

Outra alternativa é usar a classe SocketChannel e os Selectors. É mais escalável, mas mais complicadinha.

Criado 19 de novembro de 2007
Ultima resposta 19 de nov. de 2007
Respostas 6
Participantes 5