Boa noite,
Estou fazendo uma aplicação Cliente/Servidor de um Sistema de Reserva de Passagens de Ônibus…
O servidor é multi-thread e acessa um banco de dados enviando ao cliente as requisições o que mesmo realiza…
Existe três requisições que o cliente realiza ao Servidor…
1 - getCidades (O servidor devolve as cidades para o cliente escolher o destinatário),
2 - getHorarios (O cliente envia a cidade Origem e a cidade Destino e o servidor devolve os horarios ao cliente),
3 - getPoltronas (O cliente envia a hora da viagem e o servidor devolve as poltronas que estão reservadas ao).
onde é realizado via Socket.
Consegui fazer a comunicação com 1 cliente. e está funcionando normalmente
A cada requisição do cliente estou abrindo uma nova conexão no Servidor (accept) e após o fim da requisição eu fecho essa conexão .
Exemplo:
- o servidor abre a conexão;
- o servidor aguarda uma requisição do cliente;
- o cliente solicita as Cidades;
- o servidor envia as Cidades’;
- o servidor fecha a conexão.
Isso é feito para cada requisição do cliente
minha dúvida é o seguinte…
Qual é a melhor maneira para trabalhar com MULTI-THREAD, a cada requisição estar abrindo uma nova conexão e fechando-a? ou estabelecer uma conexão no inicio da aplicação e realizar todas as trocas de mensagens e fechar a conexão no final?
Se a melhor escolha for a segunda como eu faria?
Pois ao enviar e receber solicitações do Cliente ou Servidor estou usando os métodos da classe Socket shutdownInput() e shutdownOutput()
e não consigo enviar ou receber informações de ambos os lados novamente pois acusa erro…