Lib aenum:
- https://pypi.python.org/pypi/aenum
- http://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python
Peut s'installer avec la commande suivante:
pip install aenum
Le client se lance de la manière suivante:
python src/client.py -get/-put host port filename
Le serveur se lance de la manière suivante:
python src/server.py -p port -d repertoireAUtiliser
Exemple de sortie en lançant le serveur d'abord, puis en effectuant deux requêtes client d'affilée.
Serveur:
$ sudo python src/server.py -p 69 -d serverFiles/
Nb packets lost: 1. Efficienty: 0.999935
Nb packets lost: 0. Efficienty: 1.000000
Client:
$ python src/client.py -put localhost 69 test7777k
Nb packets lost: 0. Efficienty: 1.000000
$ python src/client.py -get localhost 69 test7777k
Nb packets lost: 1. Efficienty: 0.999935
Afin de tester les programmes, un sript test.sh est lancé avec la commande:
bash test.sh
Le port par défaut est 8888 afin de pouvoir lancer le script sans les droits admin. Les captures suivantes ont été effectuées avec le port 69, en droit admin.
Le script effectue la chose suivante:
-
Téléchargement du fichier test7777k auprès de hepia.infolibre.ch avec client.py.
Début du téléchargement
Le téléchargement d'un grand fichier permet de vérifier la gestion des éventuelles pertes de packets.
Fin du téléchargement
-
Vérification checksum du fichier downloadé. Il doit correspondre à a60814a887e267e2412c268c549be5c0
-
Lancement du serveur local
-
Upload du fichier 7777k vers le serveur local.
-
Suppression du fichier 7777k récupéré auprès de hepia.infolibre (pour être sûr de faire ensuite le checksum du bon fichier)
-
Téléchargement du fichier 7777k depuis le serveur local
-
Vérification du checksum du fichier downloadé depuis le serveur local. Il doit à nouveau correspondre à a60814a887e267e2412c268c549be5c0
Sortie:
$ sudo ./test.sh
md5 sums should be:
a60814a887e267e2412c268c549be5c0
downloading test7777k from hepia.infolibre.ch... This will take 5 minutes
unexpected block num 11161
unexpected block num 11577
Nb packets lost: 3. Efficienty: 0.999805
downloading finished.
md5 sum after downloading from hepia.infolibre.ch:
a60814a887e267e2412c268c549be5c0 test7777k
starting server
server started. PID : 4143
uploading file to local server...
Nb packets lost: 0. Efficienty: 1.000000
removing first downloaded file
downloading file from local server
Nb packets lost: 1. Efficienty: 0.999935
Nb packets lost: 0. Efficienty: 1.000000
Nb packets lost: 1. Efficienty: 0.999935
md5 sum after downloading from hepia.infolibre.ch:
a60814a887e267e2412c268c549be5c0 test7777k
stoping server
removing files
A travers wireshark surveillant l'interface locale, nous avons également vérifié que notre serveur notre client changent bien de port une fois la connexion initialisée:
Le client envoie sur le port 69.
Le serveur répond en ayant changé de port
Le client continue la connexion sur le nouveau port
Lorsque le serveur met un peu de temps à répondre, on peut confirmer que le client tente une requête avec un nouveau port à chaque tentative:
Enfin, nous vérifions que le changement de port se fasse correctement avec les Get Request.