Giter Site home page Giter Site logo

nfs-sockets-josefernandes's Introduction

nfs-sockets-JoseFernandes

Projeto que consiste na criação de um simples sistema de arquivos distribuídos

NFS é um sistema de arquivos distribuídos. Nele, como pode ser visto na imagem abaixo, é possível que um cliente se comunique com o sistema servidor para realizar operações nos arquivos remotos, tais como renomear, criar, remover e ler o conteúdo de uma pasta.

Sua missão é desenvolver, utilizando Sockets, um NFS (básico, sem todos os elementos mostrados nesta imagem), e implementar as seguintes operações (há muito mais, porém, só implementaremos essas):

  • readdir: devolve o conteúdo de um diretório (lista de nomes)
  • rename: renomeia um arquivo
  • create: cria um arquivo
  • remove: remove um arquivo

Lembre-se que, diferentemente do exemplo de cliente-servidor que trabalhamos em sala, você não vai fechar a comunicação com o cliente (dar um close no socket). O canal ficará aberto, e o cliente enviará comandos, e o servidor devolverá a resposta. No caso do readdir, por exemplo, o servidor devolverá a lista de arquivos de uma pasta. Já o rename, por exemplo, o servidor apenas alterará o nome de um arquivo, mas não precisará devolver qualquer texto para o cliente. Se o cliente quiser saber se realmente houve a mudança de nome, executa novamente o readdir.

Como sugestão, implemente o servidor, inicialmente, com uma lista de arquivos em memória e faça todas as operações em cima dessa lista (List arquivos). O foco é trabalhar com Sockets, suas facilidades e complexidades para comunicar duas máquinas em rede. Após tudo estar funcionando, é que você, de fato, executa o comando no sistema de arquivos do servidor. Para aprender como trabalhar com arquivos em Java, um bom recurso é esse texto do site da Caelum (apesar de antigo o ano de publicação, o assunto está bem explicado): https://blog.caelum.com.br/evolucao-do-java-io-ao-ni/. Outro bom recurso para aprender como lidar com arquivos, em Java, encontra-se aqui: https://www.baeldung.com/java-nio-2-file-api

nfs-sockets-josefernandes's People

Contributors

jiyose12 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.