PROGRAMAÇÃO DISTRIBUÍDA
Primeira Fase da Aplicação Distribuída:
Gestão de Salas
1
João Gomes
Nº 21150324
Marco Andrade Nº 21190335
ESTRUTURA 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 CONT.

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 CONT.

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 CONT.

Códigos enviados quando há alterações
70 ->Alterações nas reservas
 71 -> Alterações nas salas

6
Servidor
LIGAÇÃO
Cliente
Cliente Estabelece Ligação
via TCP
Servidor
aceita
ligação e
lança
thread
User:
Username,
password
Cliente envia pedido de
autenticação
Code 1, message: User
Login ok=50
Login fail=51
Code: 50/51
Login ok, cliente
lança thread
ligação
Login Fail, 7
mostra
mensagem ao
utilizador
LIGAÇÃ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
Thread
Multicast
Pedido IP/Porto via
Multicast
Resposta
via UDP
Pedidos
Servidor
Invoca método
Actualiza,
passando o
código que
recebeu do
servidor
ThreadCl
ient
Thread
ClientConn
ection
.
.
.
ThreadCl
ient
Cliente Gráfico
Respostas
Thread
Ligação
SERVIDOR

O servidor está implementado da seguinte forma:
Servidor
Thread
Principal
Thread
Multicast
Thread
ClientConnection
Thread
TheadClient 1
…
Thread
TheadClient N
10
THREADS NO SERVIDOR

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 127.0.0.1 porto
9090. Esta thread responde apenas a mensagens com
o conteúdo “IP”
11
THREADS NO SERVIDOR 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
CLIENTE

O cliente está implementado da seguinte forma:
Cliente
Janela
Login
Thread
Cliente
Cliente
Gráfico
13
JANELA DE LOGIN
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
COMUNICAÇÃO THREAD LIGACAO>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
ARMAZENAMENTO 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
MANUAL DO UTILIZADOR
Servidor
Cliente
INICIAR 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.
SERVIDOR
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.
ADICIONAR

Utilizadores

Salas
LISTAR

Utilizadores

Salas

Reservas
REMOVER

Utilizadores

Salas

Reservas
CLIENTE

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.
CONECÇÃO AO SERVIDOR
a
b
c
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.
LOGIN
Após uma conecção válida
poderemos efectuar o login.
d
e
d – nome do utilizador;
e – password correspondente
utilizador.
ao
RESERVAR SALA
f
g
h
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.
CONSULTAR SALAS
i
j
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.
CONSULTAR RESERVAS
k
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.
Download

Thread