Git Product home page Git Product logo

p2pfileshare's Introduction

Assignment 1 in IIIT-H, course Computer Networks. Prof Ganesh Iyer, Spring 2016

Aim:

To create an application level file sharing protocol with support for download and upload for files and indexed searching

Features:

  1. The system should have 2 clients (acting as servers simultaniously) listening to the communication channel for requests and waiting to share files (avoiding collisions) using an application layer protocol (like FTP/HTTP).

  2. Each client has the ability to do the following: a. Know the files present on each other machines in the designated shared folders. b. Download the files from the shared folder.

  3. The system should perodically check for any changes made to the shared folders.

  4. File transfer should incorporate MD5checksums to handle file transfer errors.

Specifications:

The system should incorporate the following commands:

  1. IndexGet flag (args)

    • can request the display of the shared files on the connnected system.
    • The history of requests made by either clients should be maintained at each of the clients respecitvely.
    • the flag variable can be shortlist, longlist, regex
      • shortlist:
        flag would mean that the client only wants to know the names of the files between a specific set of timestamps. The sample query is below
        $>IndexGet shortlist
        Output : should include 'name' 'size' 'timestamp' 'type of file'
      • longlist:
        Flag would mean that client wants to know the entire listing of the shared folders/directory including shortlist options.
  2. FileHash flag (args):
    This commmand indicates that the client wants to check if any of the files on the other end have been changed. The flag variable can take two values, verify and checkall

    • verify: flag should check for the specific file name provided as command line argument and return its 'checksum' and 'lastmodified' timestamp.
    • $> FileHash verify
    • Output: Checksum and lastmodified timestamp of the file

    checkall: Flag should check perform what 'verify' does for all the files in the shared folder.
    (This can be used to periodically check the files)

  3. FileDownload flag (args):
    As the name suggests, would be the command to download the files from the shared folder of the connected user to our shared folder.

    • the flag variable can take the value TCP or UDP depending on the user request.
    • if the socket is not available, it should created and both clients must use this socket for file transfer.
      $> FileDownload
      Output: should contain the filename, filesize, lastmodified, timestamp and the MD5checksum of the file.
      (HINT: the filesize parameter might be used to allocate memory)

The assignment will be done in python2.
Done By
Vikas Thamizharasan 201401179
Shaleen Garg 201401069

p2pfileshare's People

Contributors

shaleengarg avatar

Watchers

 avatar  avatar

Forkers

rahulmanoj

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.