Update README.md
All checks were successful
flavien's git/Projet_JAVA_P2P_STRI2A/pipeline/pr-master This commit looks good
All checks were successful
flavien's git/Projet_JAVA_P2P_STRI2A/pipeline/pr-master This commit looks good
This commit is contained in:
parent
68446551b4
commit
f77ea0ae2b
28
README.md
28
README.md
@ -1,12 +1,8 @@
|
||||
# Projet Répartition : Téléchargement FTP P2P
|
||||
## Protocol
|
||||
Documentation of the protocol used can be found in [doc/protocol.md](doc/protocol.md).
|
||||
|
||||
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.
|
||||
|
||||
# Usage
|
||||
## Usage
|
||||
### Tracker
|
||||
- Interactive mode: `java tracker.Tracker`
|
||||
- CLI Arguments mode: `java trackerP2P.trackerP2P -- <hostname> <PORT>` (default port 6969 (range 6000 -> 6999))
|
||||
@ -19,7 +15,13 @@ Les étapes suivantes sont conseillées.
|
||||
- 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))
|
||||
|
||||
## Étape 1 : Téléchargement à la FTP
|
||||
## 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.
|
||||
|
||||
@ -28,7 +30,7 @@ Plan de travail :
|
||||
- Concevoir l'application répartie avec UML ;
|
||||
- Écrire l'application serveur et l'application cliente.
|
||||
|
||||
## Étape 2 : Téléchargement en parallèle
|
||||
### É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.
|
||||
@ -38,23 +40,23 @@ 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
|
||||
### É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é
|
||||
### É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
|
||||
### É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 :
|
||||
### Options :
|
||||
- [ ] 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.
|
||||
- [ ] 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.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# P2P-JAVA-PROJECT version 1.2 (Binary protocol for step 2)
|
||||
# P2P-JAVA-PROJECT version 1.2 (Binary protocol for step 2+)
|
||||
|
||||
All strings in the datagram are utf-8 encoded.
|
||||
|
||||
@ -13,33 +13,33 @@ x bytes: [(bytes 8-?): PAYLOAD]
|
||||
```
|
||||
|
||||
## Requests and responses codes
|
||||
- REQUESTS (msb is 0):
|
||||
- `LIST` (0x00)
|
||||
- `LOAD` (0x01)
|
||||
- `HASH` (0x02)
|
||||
- `DISCOVER` (0x03)
|
||||
- `REGISTER` (0x04)
|
||||
- `UNREGISTER` (0x05)
|
||||
- `RATIO` (0x06)
|
||||
- `UPDATE RATIO` (0x07)
|
||||
- `SIZE` (0x08)
|
||||
- `REQUESTS` (msb is 0):
|
||||
- `LIST` (`0x00`)
|
||||
- `LOAD` (`0x01`)
|
||||
- `HASH` (`0x02`)
|
||||
- `DISCOVER` (`0x03`)
|
||||
- `REGISTER` (`0x04`)
|
||||
- `UNREGISTER` (`0x05`)
|
||||
- `RATIO` (`0x06`)
|
||||
- `UPDATE RATIO` (`0x07`)
|
||||
- `SIZE` (`0x08`)
|
||||
|
||||
- RESPONSES (msb is 1):
|
||||
- `LIST` (0x80)
|
||||
- `LOAD` (0x81)
|
||||
- `HASH` (0x82)
|
||||
- `DISCOVER` (0x83)
|
||||
- `RATIO` (0x86)
|
||||
- `DENIED` (0x87)
|
||||
- `RESPONSES` (msb is 1):
|
||||
- `LIST` (`0x80`)
|
||||
- `LOAD` (`0x81`)
|
||||
- `HASH` (`0x82`)
|
||||
- `DISCOVER` (`0x83`)
|
||||
- `RATIO` (`0x86`)
|
||||
- `DENIED` (`0x87`)
|
||||
- `SIZE` (0x88)
|
||||
- `VERSION ERROR` (0xC0)
|
||||
- `PROTOCOL ERROR` (0xC1)
|
||||
- `INTERNAL ERROR` (0xC2)
|
||||
- `EMPTY DIRECTORY` (0xC3)
|
||||
- `NOT FOUND` (0xC4)
|
||||
- `EMPTY FILE` (0xC5)
|
||||
- `NOT A TRACKER` (0xC6)
|
||||
- `UNKNOWN HOST` (0xC7)
|
||||
- `VERSION ERROR` (`0xC0`)
|
||||
- `PROTOCOL ERROR` (`0xC1`)
|
||||
- `INTERNAL ERROR` (`0xC2`)
|
||||
- `EMPTY DIRECTORY` (`0xC3`)
|
||||
- `NOT FOUND` (`0xC4`)
|
||||
- `EMPTY FILE` (`0xC5`)
|
||||
- `NOT A TRACKER` (`0xC6`)
|
||||
- `UNKNOWN HOST` (`0xC7`)
|
||||
|
||||
### List
|
||||
Payload size for list request is always zero.
|
||||
@ -77,7 +77,7 @@ y bytes: [<FILENAME>]
|
||||
2 bytes: port used to register on tracker
|
||||
? bytes: hostname used to register on tracker
|
||||
```
|
||||
Possible responses: Load Response, or Denied
|
||||
Possible responses: Load response, or Denied
|
||||
|
||||
### Size
|
||||
#### Size request
|
||||
@ -86,7 +86,7 @@ Payload contains
|
||||
```text
|
||||
? bytes: filename
|
||||
```
|
||||
Possible responses: Size response, EmptyFile or NotFound
|
||||
Possible responses: Size response, Empty file or Not found
|
||||
|
||||
#### Size response
|
||||
Payload contains
|
||||
@ -106,7 +106,7 @@ y bytes: [<FILENAME>]
|
||||
z bytes: [ALGO_NAMES requested separated by \n] (ex.: SHA-256, MD5)
|
||||
```
|
||||
|
||||
If file does not exists, a NotFound can be responded.
|
||||
If file does not exists, a Not found can be responded.
|
||||
|
||||
#### Hash response
|
||||
Payload contains:
|
||||
@ -175,7 +175,7 @@ Server block is composed with:
|
||||
```
|
||||
|
||||
#### Not a Tracker
|
||||
This error is raised when receiving a DISCOVER, a REGISTER, or an UNREGISTER request,
|
||||
This error is raised when receiving a Discover, a Register, or an Unregister request,
|
||||
but this application is not a tracker.
|
||||
|
||||
#### Ratio Request
|
||||
@ -184,7 +184,7 @@ Contains:
|
||||
2 bytes: port
|
||||
? bytes: hostname
|
||||
```
|
||||
Possible responses: Ratio Response, or Unknown Host
|
||||
Possible responses: Ratio response, or Unknown host
|
||||
|
||||
#### Ratio Response
|
||||
Contains:
|
||||
@ -205,7 +205,7 @@ Contains:
|
||||
? bytes: client* hostname
|
||||
* note: used by client to register on tracker
|
||||
```
|
||||
Possible responses: No response, or Unknown Host (if client is not registered or server is not registered)
|
||||
Possible responses: No response, or Unknown host (if client is not registered or server is not registered)
|
||||
|
||||
Note: client must have verified hash before sending Update Ratio to tracker for each server which participated.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user