A maior rede de estudos do Brasil

Grátis
10 pág.
APS de distribuida

Pré-visualização | Página 1 de 1

*
Atividade Prática Supervisionada
CRIAR UMA APLICAÇÃO DISTRIBUÍDA
Prof. Jorge Viana Doria Junior, M.Sc.
Mestre em Informática iNCE/DCC/PPGI/UFRJ
*
Roteiro
Objetivos
Descrição da aplicação
Sobre a arquitetura
Implementação
Execução em paralelo
Apresentação
*
Objetivos
Fundamentar conceitos sobre:
Arquitetura distribuída
Interface baseada em Sockets
Serialização de dados em Java (Interface Serializable)
Modelo de Java Threading
Sistema de passagem de mensagem
*
Descrição da aplicação
Sistema de Sincronização de Arquivos
Desenvolver um cliente e um servidor que permita a sincronização e transferência de arquivos (downloads e uploads). O servidor terá que responder a múltiplos pedidos por parte de diversos clientes. Cliente e servidor terão de ter capacidade de efetuar uploads e downloads em simultâneo.
Desenvolva um programa de sincronização de arquivos entre computadores. O programa deve comparar dois diretórios localizando os arquivos que têm em um e não têm no outro computador para realizar a sincronização. Caso um arquivo esteja em ambos diretórios, o mais recente deve prevalecer em ambas máquinas. O programa deve ter uma opção que permita ao usuário interagir no processo de sincronização, ou seja, decidir se um arquivo vai mesmo ser copiado de uma máquina para outra.
*
Sobre a arquitetura
*
Sobre a arquitetura
Vantagens
A distribuição dos dados é fácil.
Faz uso efetivo de sistemas em rede.
É fácil adicionar novos servidores.
Desvantagens
Não existe um modelo de dados compartilhado.
Gerenciamento redundante em cada servidor.
Não há um registro central de nomes.
*
Implementação
O programa deve ser instalado em ambas máquinas e a comunicação deve ser implementada usando TCP/IP.
Uma requisição deve estar encapsulada em um objeto Request, esse objeto deve conter como atributo a requisição (ex. obter lista dos arquivos de um diretório ou download ou upload de um arquivo) e os parâmetros da requisição (por exemplo, um path). A outra máquina, ao receber o objeto Request, deve extrair a requisição e executá-la.
Ao término da execução, o servidor deve criar a resposta (um objeto Reply) para enviar à máquina que fez a requisição. Dentro do objeto Reply deve conter um atributo que possibilite colocar um arquivo (p.ex. um array de bytes), caso a requisição seja de download. Use ObjectOutputStream e ObjectInputStream para serializar o objeto Request/Reply na comunicação cliente/servidor. 
*
Implementação
1. Separe claramente o código de comunicação do código de aplicação.
2. Para implementar a busca, utilize o pacote java.io.File;
3. Para implementar o trabalho, pesquise as classes abaixo:
java.net.*
FileOutputStream
FileInputStream
ObjectOutputStream
ObjectInputStream
4. Utilize o link abaixo para praticar a transferência de arquivos via Sockets;
http://www.devmedia.com.br/java-socket-transferencia-de-arquivos-pela-rede/32107
*
Execução em paralelo
Como implementar recursos multithread?
Estendendo a classe Thread ou
Implementando a Interface Runnable
*
Apresentação
1. A atividade deve ser desenvolvida em grupos com 2 alunos.
2. O programa deve ser apresentado ao professor no laboratório no dia 22/11/2018 e publicado até o dia 22/11/2018.
3. Os trabalhos NÃO poderão ser enviados por e-mail.
4. Será verificado o funcionamento do programa e em seguida os alunos devem responder a questões sobre o código do programa referentes ao uso de mecanismos de comunicação entre processos. 
5. Trabalhos não entregues após o fim do prazo original, não será aceito, ou seja, terá nota ZERO.
6. Em caso de cópia do código de outro aluno, ambos não terão nota.

Crie agora seu perfil grátis para visualizar sem restrições.