Skip to content

the-AjK/P3-P2P

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

P3-P2P

Simulazione di un sistema P2P di scambio risorse

Progetto Programmazione Concorrente e Distribuita A.S. 2013/2014

Copyright (c) 2014, Alberto Garbui (aka JK) www.ajk.altervista.org

All rights reserved.

Compile:

$ javac server.ServerStarter
$ javac client.ClientStarter

Usage RMI:

rmiregistry							start RMI.	

Usage server:

java server.ServerStarter <server_name>

Commands:

server_name							start a new server with the specified name.

Examples:

$ java server.ServerStarter Razorback1
$ java server.ServerStarter Razorback2

Usage client:

java client.ClientStarter <client_name> <server_to_connect> <download_limit> [resource_name resource_parts]

Commands:

client_name							specify the client's name.
server_to_connect					specify the server to connect.
download_limit						specify the download limit.

Options:

[resource_name resource_parts]		start the client with a preset resource named "resource_name" with "resource_parts" parts.

Examples:

$ java client.ClientStarter C1 Razorback1 3 A 1 B 4 C 6 E 2
$ java client.ClientStarter C2 Razorback2 3 A 1 D 2 C 6

Description:

Il progetto consiste nella realizzazione di un sistema P2P per la condivisione e lo scambio di un certo numero di risorse. Il sistema è costituito da un certo numero di Server e da un certo numero di Client che si connettono e si disconnettono dal sistema. Ogni risorsa RK è caratterizzata da un nome, R, e da un numero K di parti in cui è scomposta. Ogni client ha un certo numero di risorse ed ha una certa capacità di download D che gli permette di scaricare fino a D parti di risorse contemporaneamente. Un client C che si connette al sistema mette a disposizione l’insieme di risorse che possiede. Un client C connesso può richiedere al sistema una risorsa RK di cui ha bisogno; il server S a cui C è connesso dovrà indicare a C l’elenco dei client che sono attualmente connessi al sistema e in possesso di una copia di RK. C quindi comunicherà direttamente con un certo numero di client di questo elenco, scaricando concorrentemente più parti di RK da diversi clienti, in modo da massimizzare l’utilizzo della propria capacità di download. Se durante la fase di scaricamento di una parte di R, un cliente contattato si disconnette dal sistema, C deve poter reindirizzare la richiesta di quella parte ad un altro dei client che la possiedono. Si suppone che un client abbia infinita capacità di upload, cioè può servire le richieste di infinite parti di risorsa purché ogni richiesta arrivi da un client diverso. Perciò, dato un client A che richiede una risorsa divisa in 3 parti e un client B che è l’unico a possedere quella risorsa, non è possibile che A apra 3 connessioni con B per scaricare contemporaneamente le 3 parti della risorsa; A dovrà scaricare da B la risorsa connettendosi con B per 3 volte in modo sequenziale. Al fine di rendere la simulazione verificabile ogni scaricamento di una parte deve essere simulato con un tempo di attesa costante per tutti i client ma configurabile in modo agevole a livello di codice sorgente. Il programma deve gestire richieste e scambi concorrenti di diverse risorse. L’applicazione inoltre deve essere distribuita, cioè i vari client e server devono essere rappresentati da programmi distinti che possono risiedere su JVM distinte.

About

Simulazione di un sistema P2P di scambio risorse

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages