Q1: Como se integra o código?
- Existem duas formas diferentes que podem usar para o fazer, sem ser necessário grandes alterações à vossa estrutura:
- Nao alterar o cliente-servidor de cada parte e usar os ficheiros para coordenar a execução. Nesta forma, o master preenche os quizes e o jogador usa o(s) ficheiro(s) que master gera para jogar.
- Criar um servidor ao qual todos os clientes (master, player e analytics) se ligam e que fas de intermediarios com os vossos servidores. OU seja, recebe todos os pedidos e depois (conforme o seu tipo) reenvia para o servidor respectivo.
- Escolher um dos modelos anteriores e preparar o teu componente para funcionar.
- criar os ficheiros para os outros acederem ou ler ficheiros (como se tenham sido criados por outros) e sinalizar o acesso, para impedir acessos simultaneos.
- Para alem do que foi apresentado antes, criar o servidor intermedio e dirigir todas as questoes para o vosso sevidor-
- criar os ficheiros para os outros acederem ou ler ficheiros (como se tenham sido criados por outros) e sinalizar o acesso, para impedir acessos simultaneos.
- O que não deve fazer: a parte do código dos restantes membros do grupo.
- A primeira é claramente mais simples.
- Sim.
Q5: Como posso implementar vários clientes usando UDP?Com sockets UDP é simples, porque o servidor quando recebe uma mensagem sabe de que cliente recebeu (através do endereço) e por isso sabe a quem responder.
Q6: Como posso implementar vários clientes usando TCP?existem duas soluções diferentes.
- Criar uma thread para a comunicação com cada cliente (a seguir ao accept)
- Usar o select e seguir o modelo que foi apresentado no exemplo (código do cliente).
Q1: O que é o diagrama de mensagens? O que é o formato da mensagem?COMPONENTE INDIVIDUAL
- O formato da mensagens é definição dos campos que compõem cada tipo de mensagem.
- O primeiro passo é definir a lista de mensagens diferentes que a usar. Duma forma muito simples, a cada tipo de acção está associada uma mensagem.
- Depois, é preciso identificar a informação que deve ser incluida para se poder realizar essa ação. Isto é, a lista de campos da mensagem.
- No caso do código de exemplo, existem 4 mensagens diferentes. porque se podem fazer 4 ações distintas:
- Registar o utilizador: (mensagem IAM)
- Dizer Ola ao servidor: (mensagem HELLO)
- Dizer Ola a um utilizador registado atraves do servidor: (Mensagem HELLOTO)
- Fim: Tipo de mensagem (KILLSERVER)
- No caso da mensagem de registo, temos de saber o nome do utilizador que se quer registar, então a mensagem tem 2 campos: tipo e nome do utilizador.
- No caso do Ola, nao preciso de dar nenhum nome, entao a mensagem so tem um campo: Tipo:
- Tomando como exemplo o caso de teste:
- Mensagem: Tipo [user_name] Com [] parametro opcional (função do tipo de mensagem)
- Tipo: {IAM, HELLO, HELLOTO, KILLSERVER}
- Formato detalhado por tipo:
- IAM <user name>
- HELLO
- HELLOTO <remote_user_name>
- KILLSERVER
- O diagrama de mensagens são as sequências possíveis das interações entre os clientes e o servidor.
- As interações normais entre o cliente e o servidor.
- As interações de excepção, em que o cliente não interage com o servidor de acordo com o comportamento expectável.
- Existem muitas, mas as mais comuns são: envio de mensagens que não seguem o formato definido, que têm parâmetros em falta, sequências de ação inválidas, falta da autorização para realizar determinada ação.
- Se não sabe o que é, não tente usar. Use os diagramas de mensagem