·

Cursos Gerais ·

Rede de Computadores

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Sistemas Distribuídos Projeto de Programação Napster com RMI 1 Definição do Sistema Crie um sistema P2P EM PYTHON que permita a transferência de arquivos de vídeo gigantes mais de 1 GB entre peers intermediados por um servidor centralizado utilizando RMI e TCP como protocolo de comunicação O sistema funcionará de forma similar porém muito reduzida ao sistema Napster um dos primeiros sistemas P2P criado por Shawn Fanning aos 18 anos 2 V isão g eral do sistema O sistema será composto por 1 servidor com IP e porta conhecidas e muitos peers O peer atua tanto como provedor de informação neste caso de arquivos quanto como receptor deles Inicialmente o servidor estará disponível para receber requisições dos peers Quando um Peer X entra no sistema deve comunicar ao servidor suas informações O servidor receberá as informações e as armazenará para futuras consultas Quando um Peer Y qu is erbaixar um vídeo deverá enviar para o servidor uma requisição com o nome do arquivo O servidor procurará pelo nome e responderá ao Peer Y com uma lista de peers que o contém O Pe erY receberá a lista do servidor e escolherá um dos peers da lista vamos supor que o escolhido é o P eerZ A seguir o P eerY requisitará o arquivo para o P eerZ quem poderá aceitar o pedido enviando o arquivo ou rejeitar o pedido Finalmente quando o P eerY baixar o arquivo em uma pasta a pessoa poderá ir na pasta e visualizálo usando um software externo de reprodução como VLC 3 Funcionalidades do Servidor Recebe e responde requisições dos peers obrigatório com RMI Requisição JOIN vinda de um peer que quer entrar na rede A requisição deve conter as informações mínimas do peer eg nome dos arquivos que possui as quais devem ser armazenadas em alguma estrutura de dados no servidor A resposta do servidor enviada ao peer conterá a string JOINOK Requisição SEARCH vinda de um peer que procura um determinado arquivo A requisição deve conter somente o nome do arquivo com sua extensão eg o string Aulamp4 A resposta do servidor enviada ao peer conterá uma lista vazia ou com as informações dos peers que possuem o arquivo Requisição UPDATE vinda de um peer que baixou um arquivo A requisição deve conter o nome do arquivo baixado o qual será inserido na estrutura de dados que mantém as informações dos peer s A resposta do servidor enviada ao peer conterá a string UPDATEOK Inicialização do servidor o servidor deve capturar inicialmente o IP e a porta do registry O endereço IP a ser inserido será o 127001 se estiver realizando o projeto na mesma máquina Assuma esse IP quando o Peer quiser comunicarse com o servidor A porta default que permitirá aos peers conectarse com o regi stry será a 109 9 Sobre a captura ela se dará pelo teclado 4 Funcionalidades do Peer assuma o ponto de vista de um Peer X Recebe e responde opcional usar threads requisições do servidor e de outros peers Envia por RMI uma requisição de JOIN a o servidor Deve esperar o JOINOK Envia por RMI uma requisição de UPDATE a o servidor Deve esperar o UPDATEOK Envia por RMI uma requisição de SEARCH a o servidor Voltará uma lista como resposta vazia ou com informações Para os envios por RMI acima considere que não há perdas nem duplicações Envia por TCP um requisição de DOWNLOAD a outro peer Ver abaixo as possíveis respostas obtidas Requisição DOWNLOAD vinda de outro peer Peer Y pedindo por um determinado arquivo O P eerX deve verificar se possui o arquivo e enviálo por TCP a o PeerY Recebimento do arquivo o arquivo deverá ser armazenado em uma pasta específica d o peer Inicialização do peer o peer deve capturar inicialmente o IP porta e a pasta onde estão e serão armazenados seus arquivos Sobre a captura ela se dará pelo teclado Sobre as pastas cada peer terá sua própria Por exemplo se houverem 3 peers haverá 3 pastas diferentes se estiver realizando o projeto na mesma máquina Ver o JOIN no item Menu interativo na seção 6 5 Mensagens prints apresentadas na console Na console do peer deverão ser apresentadas exatamente nem mais nem menos as seguintes informações Quando receber o JOINOK print Sou peer IPporta com arquivos só nomes dos arquivos Substitua a informação entre os parênteses com as reais Por exemplo Sou p eer 127001 8776 com arquivos aula1mp4 aula2mp4 Quando receber a resposta do SEARCH print peers com arquivo solicitado IPporta de cada peer da lista Quando receber o arquivo print Arquivo só nome do arquivo baixado com sucesso na pasta nome da pasta Menu interativo por console que permita realizar a escolha somente das funções JOIN SEARCH DOWNLOAD No caso do JOIN deve capturar só o IP porta e a pasta onde se encontram os arqu ivos eg c emppeer1 c emppeer2 etc A partir da pasta seu código procurará nela o nome dos arquivos a serem enviados ao servidor No caso do SEARCH deve capturar só o nome do arquivo com sua extensão eg aulamp4 A busca por ele será exatamente por esse nome Note que não deve capturar a pasta No caso do DOWNLOAD deve capturar só o IP e porta do peer onde se encontra o arquivo a ser baixado Note que não deve capturar a pasta Na console do servidor deverão ser apresentadas exatamente nem mais nem menos as seguintes informações Quando receber o JOIN print Peer IPporta adicionado com arquivos só nomes dos arquivos Quando receber o SEARCH print Peer IPporta solicitou arquivo só nome do arquivo 6 Teste realizado pelo professor Após a compilação o professor abrirá 4 consoles no Windows seria o CMDEXE também conhecido como prompt Um deles será o servidor com o registry e os outros 3 os peers A partir das consoles o professor realizará os testes do funcionamento do sistema Cabe destacar que Seu código não deve estar limitado a 3 peers suportando mais do que 3 Inicialmente o professor levantará executará o servidor A seguir levantará os peers Você não precisará de 4 computadores para realizar a atividade Basta abrir as 4 consoles