Ola pessoal, estou desenvolvendo um pequeno servidor e me aventurando no mundo dos sockets, com isso vem a preocupação com as threads.
Com um tempo cheguei ao código abaixo:
while(true){
fluxo = new Fluxo(SocketServer.instancia().ouvir());
Map<String, String> dados = fluxo.decompoePedido();
Mensagem mensagem = new Mensagem(dados.get("texto"),dados.get("destinatario"));
Envio envio = new Envio(dados.get("porta"));
int tentativas = 0;
while(tentativas < 5){
tentativas++;
if(envio.enviarMensagem(mensagem)){
fluxo.saida.println("enviado");
break;
}else if(tentativas == 5){
fluxo.saida.println("falhou 5 vezes");
}
}
}
[list]O pequeno programa envia uma mensagem, e tentará envia-la 5 vezes caso enviarMensagem() retorne false.[/list]
[list]O metodo ouvir() em SocketServer retorna um socket.accept();[/list]
[list]Fluxo controla entrada e saida de dados atraves da conexao do socket[/list]
[list]A unica classe que é gerada uma nova thread é a Envia que implementa Runnable…[/list]
Alguma coisa me diz que estou fazendo isso errado… :? Será que este sistema de tentativas funcionará quando muitos clientes enviarem as mensagens ao mesmo tempo?
O que teria que mudar para cada envio ficar em sua thread e computar se foi ou nao enviado?
Algumas dicas de tutoriais neste assunto? Como voces, PROS, trabalham com este tipo de projeto?