Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

xrisaD/PeerToPeerService

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

184 Commits
184 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Peer-to-Peer (P2P) Service

Tracker

java Tracker PATH_OF_LISTFILE
  • PATH_OF_LISTFILE: The path of the file which contains all the files in the P2P system
    File Format: each line of the file contains the name of a file
    file's name is unique within the system and we use it as identifier

Peer

java Tracker IP PORT USER_NAME PASSWORD PATH_OF_SHARED_DIRECTORY AUTO_MODE
  • IP: PEER'S IP
  • PORT: PEER'S PORT
  • USER_NAME: PEER'S USERNAME
  • PASSWORD: PEER'S PASSWORD
  • PATH_OF_SHARED_DIRECTORY: all files in this directory will be shared. You should also have a directory under this directory which should be called "tmp". This directory will be used to temporary save the file's parts, in case the peer leaves the system.
  • AUTO_MODE: {true, false} If we set auto-mode to false, a command line menu will be shown and we will download whatever file we want. On the other hand, if we set auto-mode to true, the peer will try to download all system's files

Simulation

We simulate a system with 1 tracker and NUM_PEERS peers. At the beginning, the peers with a file at their shared directory are called seeders and partition those files. All peers start sending requests one another. SEEDER_SERVE requests are sent to seeders and COLLABORATIVE_DOWNLOAD requests are sent to non seeders. Once the peers receive requests, they choose to answer to only one of those requests, using a protocol which rewards the ones that share the most files. At the end, all peers have saved in their SHARED_DIRECTORY all system's files.

java Simulation NUM_PEERS OUT_PATH PATH_OF_LISTFILE TEST_DATA_PATH 
  • NUM_PEERS: the number of peers you want to create
  • OUT_PATH: path that the class files are placed
  • PATH_OF_LISTFILE: Tracker's input path
  • TEST_DATA_PATH: this should be a directory under of which all peer's paths will be placed. Under this directory you should have NUM_PEERS directories with the following name pattern: each one of them should be called "peerX" where X = 0, 1, ..., NUM_PEERS-1. Under these directories the shared directory should be placed.
    For example, if we have 2 peers:
.
└── TEST_DATA_PATH
    ├── peer0
    |   └── shared_directory
    |       └── tmp
    └── peer1
        └── shared_directory
            └── tmp

Architecture:


This project was developed with the Pair Programming technique.

About

The project for my university's Computer Networks class @ AUEB 2021

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.