P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº Marco AndradeNº
E STRUTURA DE COMUNICAÇÃO Int code, inteiro que transporta o código referente a operação que se pretende efectuar. T Message, campo genérico que encapsula os dados necessários para processar a operação descrita pelo campo code. 2
C ÓDIGOS DE COMUNICAÇÃO Códigos 0->50, cliente para servidor 1 -> Login 2 -> Pedir listagem de salas 3 -> Pedir Listagem de reservas de salas do utilizador actual 4 -> Pedir para registar reserva 5 -> Logout 6 -> Pedir para cancelar reserva 7 -> Pedir listagem de todas as reservas 3
C ÓDIGOS DE COMUNICAÇÃO C ONT. Códigos 50->100 servidor para o cliente sucesso 99 -> Login efectuado com sucesso 98 -> Preparar para receber listagem de salas 97 -> Preparar para receber listagem de reservas de salas do utilizador actual 96 -> Sala reservada com sucesso 95 -> Listagem de todas as reservas 4
C ÓDIGOS DE COMUNICAÇÃO C ONT. Códigos 50->100 servidor para o cliente, falha 50 -> Login inválido 51 -> Utilizador sem salas reservadas 52 -> Sala já reservada 53 -> Falhou pedido para cancelar reserva 5
C ÓDIGOS DE COMUNICAÇÃO C ONT. Códigos enviados quando há alterações 70 ->Alterações nas reservas 71 -> Alterações nas salas 6
L IGAÇÃO Cliente Estabelece Ligação via TCP Servidor aceita ligação e lança thread Cliente envia pedido de autenticação Code 1, message: User User: Username, password Code: 50/51 Login ok=50 Login fail=51 Login ok, cliente lança thread ligação Login Fail, mostra mensagem ao utilizador Cliente Servidor 7
L IGAÇÃO Após verificação das credenciais do utilizador, o programa cliente lança uma Thread que vai receber todas respostas do Servidor. O cliente Gráfico é responsável por enviar todos os pedidos para obter a informação que necessita. 8
Cliente Gráfico Thread Ligação Invoca método Actualiza, passando o código que recebeu do servidor Servidor Thread Multicast Thread ClientConn ection ThreadCl ient Pedidos Respostas Pedido IP/Porto via Multicast Resposta via UDP
S ERVIDOR O servidor está implementado da seguinte forma: 10 Servidor Thread Principal Thread Multicast Thread ClientConnection Thread TheadClient 1 … Thread TheadClient N
T HREADS NO S ERVIDOR Thread Principal: Esta thread é responsável por lançar duas threads: a thread ClientConnection e threadMulticast, esta é ainda responsável pela gestão da consola onde é possível efectuar operações de gestão de salas, utilizadores e reservas. Thread Multicast: Esta thread é responsável por ficar à escuta de pedidos multicast de modo a dar suporte a resolução do IP do servidor via multicast, no IP porto Esta thread responde apenas a mensagens com o conteúdo “IP” 11
T HREADS NO S ERVIDOR CONT. Thread ClientConnection : Esta thread é responsável por aceitar os pedidos de ligação de clientes e pedir a classe Data para registar o socket do cliente e o ID da thread que o vai atender. Thread ThreadClient : Esta thread é responsável por atender todos os pedidos de clientes bem como responder a esses pedidos. Esta thread serve apenas para descodificar as mensagens vindas do cliente e fazer os respectivos pedidos à classe Data que é quem trata de toda a informação. Após obter a informação de Data codifica a informação obtida e envia ao cliente. 12
C LIENTE O cliente está implementado da seguinte forma: 13 Cliente Janela Login Cliente Gráfico Thread Cliente
J ANELA DE L OGIN Quando o programa é iniciado é lançada uma janela modal que permite ao utilizador procurar por um servidor através de multicast fazer e fazer Login. Após um Login com sucesso esta janela é fechada e é lançada uma Thread (ligação) que vai receber todas as mensagens enviadas do cliente para o servidor. É ainda disponibilizado ao utilizador uma janela gráfica para efectuar as operações que desejar. 14
C OMUNICAÇÃO T HREAD L IGACAO - > CLIENTE GRÁFICO Quando a Thread ligação recebe uma mensagem vindo do cliente invoca o método Actualiza(int code) que actualiza os dados conforme o código que recebeu por parâmetro. 15
A RMAZENAMENTO DE DADOS Os dados são armazenados de forma serializada, em três.txt, estes ficheiros são: Reserves.txt, armazena os dados referentes às reservas; Rooms.txt, armazena os dados das salas disponíveis no sistema; Users.txt, armazena os dados dos utilizadores que podem aceder ao sistema. 16
M ANUAL DO UTILIZADOR Servidor Cliente
I NICIAR APLICAÇÃO Para inicial servidor ou um cliente basta executar o batch files RunServer.bat e RunClient.bat respectivamente que se encontram na pasta do projecto.
S ERVIDOR A aplicação servidora trabalha em modo consola e assim teremos que ter uma noção acerca dos comandos das seguintes acções: Adicionar utilizadores e salas Listar utilizadores, salas e reservas Remover utilizadores, salas e reservas Em caso de alguma dúvida persistir basta inserir um comando inválido e será aprensentado um help.
A DICIONAR Utilizadores Salas
L ISTAR Utilizadores Salas Reservas
R EMOVER Utilizadores Salas Reservas
C LIENTE A aplicação cliente trabalha em modo gráfico e assim teremos que ter uma noção acerca de alguns passos de modo a conseguir executar as acções mais importantes.
C ONECÇÃO AO SERVIDOR Como podemos observar na figura verificamos que existem 3 campos a preencher, assim: a – ip do servidor; b – porto do servidor; c – ip multicast onde automáticamente poderemos preencher os campos a e b. a b c
L OGIN Após uma conecção válida poderemos efectuar o login. d – nome do utilizador; e – password correspondente ao utilizador. d e
R ESERVAR SALA Nesta aba é onde podemos efectuar a reserva de uma sala ao inserir os seguintes campos: f – identificador da sala; g – dia a reservar; h – horário da reserva. f g h
C ONSULTAR SALAS Nesta aba é onde podemos consultar uma sala e assim teremos de inserir os seguintes campos: i – podemos optar por 2 métodos para consulta, por sala ou dia/hora; j – preencher campos acerca da consulta que se pretende. i j
C ONSULTAR R ESERVAS Nesta aba é onde podemos consultar as nossas reservas e cancelar e assim teremos de inserir os seguintes campos: k – preencher campos acerca da reserva que se pretende. k