Comentários
A comunicação entre dois processos (cliente e servidor) via rede ocorre através de uma interface de software denominada socket, que é uma interface entre a camada de aplicação e a de transporte.
Fonte: Shutterstock.
Deseja ouvir este material?
Áudio disponível no material digital.
O servidor do chat utiliza sockets e aguarda por conexões de clientes. A cada cliente que requisita uma conexão, é criado um novo thread para controle dele.
O cliente é formado por um processo principal, o qual habilita o console para envio de mensagens, porém há um thread que aguarda por mensagens que venham do servidor, as quais vieram de outros clientes.
A parte cliente da aplicação deve ser implementada para smartphone com acesso via navegador ou aplicativo instalado localmente, já que permite acesso mais fácil por motoristas. Para haver conexão com o servidor, o smartphone deverá ter acesso à internet por rede de dados celulares ou rede sem fio.
A parte servidor da aplicação deverá ser implementada para uma máquina que tenha maior capacidade de processamento e que deverá executar em alta disponibilidade (24 horas por dia, 7 dias por semana).
A comunicação poderá ser implementada utilizando API de sockets da linguagem adotada pela empresa para desenvolvimento, como C++, Python ou Java. A troca de mensagens é realizada passando pelo gerenciamento do servidor que coordena a ordem das mensagens.
O servidor poderá ser implementado usando vários threads de execução para atender às requisições dos clientes.
O jogo possui quatro passos:
Descreva como este jogo pode ser implementado para dois jogadores usando um modelo cliente-servidor, no qual os jogadores são os clientes e o servidor recebe as requisições dos clientes (jogadas), atualiza o tabuleiro e sinaliza quando há vencedor.
A solução para este problema envolve um modelo cliente-servidor, no qual os jogadores são os clientes. Uma jogada é definida no cliente de acordo com o estado do tabuleiro e as jogadas possíveis, obedecendo às regras do jogo. Ao fazer uma jogada, uma requisição é enviada para o servidor, que atualiza o tabuleiro e envia um retorno para o cliente.
O servidor é responsável por sortear qual jogador começa o jogo e atender às requisições. Quando um cliente envia requisição (jogada) para o servidor, este verifica se a jogada é válida e se há um ganhador. Se houver um ganhador, o servidor deverá avisar qual é o vencedor e encerrar o jogo. Se não houver um ganhador naquela jogada, o servidor deverá atualizar o tabuleiro e enviar para o cliente, como resposta à requisição. A comunicação entre processos cliente e servidor poderá ser realizada utilizando uma API de sockets da linguagem de programação escolhida.