You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
4.0 KiB
Markdown
66 lines
4.0 KiB
Markdown
# Projet Répartition : Téléchargement FTP P2P
|
|
## Protocol
|
|
Documentation of the protocol used can be found in [doc/protocol.md](doc/protocol.md).
|
|
|
|
## Usage
|
|
### Tracker
|
|
- Interactive mode: `java tracker.Tracker`
|
|
- CLI Arguments mode: `java trackerP2P.trackerP2P -- <hostname> <PORT>` (default port 6969 (range 6000 -> 6999))
|
|
|
|
### Server-only
|
|
- Interactive mode: `java serveurP2P.ServeurP2P`
|
|
- CLI Arguments mode: `java serveurP2P.ServeurP2P -- <serveurHOSTNAME> <serveurPORT> <trackerHOSTNAME> <trackerPORT>` (default server port: server 7070 (range 7000->7070) and tracker port 6969 (range 7000 -> 7999))
|
|
|
|
### Client+Server
|
|
- Interactive mode: `java clientP2P.ClientP2P`
|
|
- CLI Arguments mode: `java clientP2P.ClientP2P -- <clientTransportProtocol> <integratedServerHOSTNAME> <integratedServerPORT> <trackerHOSTNAME> <trackerPORT>` (default tracker port 6969 (range 7000 -> 7999) and server port: server 7070 (range 7000->7070))
|
|
|
|
## Sujet
|
|
Lien vers le [document original](https://stri-online.net/FTLV/mod/resource/view.php?id=1753).
|
|
|
|
**But** : le but de ce projet est de créer une application répartie en Java de téléchargement de fichier en mode P2P (peer to peer ou poste à poste).
|
|
Les étapes suivantes sont conseillées.
|
|
|
|
### Étape 1 : Téléchargement à la FTP
|
|
|
|
La première étape doit permettre de télécharger un fichier en intégralité d'une machine vers une autre machine de façon similaire aux applications suivant le protocole FTP.
|
|
|
|
Plan de travail :
|
|
- Lire le sujet jusqu'au bout et la RFC FTP ([version anglaise](https://www.ietf.org/rfc/rfc959.txt), [version française](http://abcdrfc.free.fr/rfc-vf/pdf/rfc959.pdf)) ;
|
|
- Concevoir l'application répartie avec UML ;
|
|
- Écrire l'application serveur et l'application cliente.
|
|
|
|
### Étape 2 : Téléchargement en parallèle
|
|
|
|
Dans la seconde étape, on permet à un client de télécharger le fichier depuis plusieurs serveurs.
|
|
Le fichier sera découpé en plusieurs blocs de tailles égales (par exemple 4 Ko) qui seront téléchargés depuis plusieurs serveurs.
|
|
Dans cette étape c'est le client qui choisit (par exemple aléatoirement) quel bloc télécharger depuis quel serveur.
|
|
|
|
Plan de travail :
|
|
- Modifier le serveur pour gérer l'envoi de n'importe quel bloc d'un fichier ;
|
|
- Modifier le client pour qu'il puisse demander le téléchargement de n'importe quel bloc et re-créer le fichier complet.
|
|
|
|
### Étape 3 : Transformation en P2P simple
|
|
|
|
Dans cette étape, il n'y a plus de clients ni de serveurs ; les applications sont les deux à la fois.
|
|
Chaque application devra noter de quelle partie du fichier elle dispose. Au démarrage certaines applications auront le fichier complet et les autres aucun bloc.
|
|
Les applications demanderont aléatoirement chaque bloc manquant à n'importe quelle autre application qui renverra soit le bloc soit un message d'erreur.
|
|
|
|
### Étape 4 : P2P coordonné
|
|
|
|
Dans cette étape, on ajoute un serveur dont le rôle est de maintenir la liste des applications gérant le téléchargement d'un fichier et quel bloc chaque application possède.
|
|
Ce serveur coordonnera le téléchargement en précisant à chaque application, à qui se connecter et ce qui y est disponible.
|
|
|
|
### Étape 5 : P2P coopératif
|
|
|
|
Dans cette étape, on doit s'assurer que les applications envoient et reçoivent globalement les même quantités.
|
|
On essaiera ainsi de désavantager les applications qui ne font que télécharger et n'envoient rien.
|
|
|
|
### Options :
|
|
- [x] Créer une IHM (interface homme machine) Graphique pour les applications avec Swing par exemple.
|
|
- [x] Gérer à la fois des communications UDP et TCP.
|
|
- [x] Permettre la recherche de fichiers à partir de leur nom ou de toute autre caractéristique. À l'issu de la recherche on devra pouvoir connaître un ensemble d'application possédant le fichier et commencer le téléchargement.
|
|
- [ ] Gérer le protocole d'une application de téléchargement P2P existante (bittorrent, emule ou autre).
|
|
|
|
Note : toute fonctionnalité supplémentaire ne sera prise en compte dans la notation que si toutes les étapes ont été correctement traitées.
|