Programmation TCP
1 Prélude
Vous devez rendre tout ce que vous avez obtenu pendant le TP, sur arche
Vous pouvez le finir chez vous, ou le rendre à la fin du TP.
2 Introduction
On fait la même chose que la dernière fois, mais en TCP.
3 Découverte
Récupérez l’archive TP4.zip sur arche et décompressez-là.
Compilez le .c et lancez-le sur votre machine
Depuis un autre terminal, lancez la commande
python3 client.py 127.0.0.1 1234
- Modifiez le programme pour gérer les erreurs (afficher l’erreur et quitter le programme)
4 Serveur
Ecrire un serveur
server.py
compatible avec votre client. Le serveur doit afficher l’IP et le port du client.Lancez
server.py
sur votre pc etclient.py
sur un autre PC. Vérifiez que tout fonctionne.Modifiez le serveur pour qu’il mette le message du client en majuscule.
PREMIER RENDU: Les deux fichiers client.py, server.py et une capture wireshark montrant le client et le serveur qui communiquent.
5 Modifications
- Recopiez les fichiers
server.py
etclient.py
dans deux nouveaux fichiersserver2.py
etclient2.py
. Modifiez ces nouveaux fichiers, de sorte que le client envoie deux entiers au serveur, qui va renvoyer la somme. Le client enverra un seul message, dont les 4 premiers octets correspondront au premier entier, et les 4 octets suivant au deuxième entier. Les deux entiers sont à demander au client (syntaxe:x=int(input("donner un entier"))
)
DEUXIEME RENDU: Les deux fichiers client2.py, server2.py
6 Modifications 2
- Recopier les fichiers
server2.py
etclient2.py
dans deux nouveaux fichiersserver3.py
etclient3.py
. Modifiez ces nouveaux fichiers, de sorte que le client envoie les deux entiers au serveur en deuxsend
(un entier parsend
), et que le serveur fasse deuxrecv
(un par entier).
IMPORTANT: Ecrire votre code de façon à ce que les deux send
de la part du client soient sur deux lignes consécutives du programme(faire d’abord les deux input
, et ensuite les deux send
)
TROISIEME RENDU: Les deux fichiers client3.py
, server3.py
7 Modifications 3
Est-ce que
client3.py
est compatible avecserver2.py
? Justifier. (Attention: ce n’est pas parce que tout a fonctionné correctement quand vous lancez l’expérience que les programmes sont compatibles. Vous avez peut-être eu de la chance).Est-ce que
client2.py
est compatible avecserver3.py
? Justifier.Recopier le fichier
server2.py
dans un fichiernewserver2.py
. La question suivante est à faire dans le nouveau fichier.L’instruction
recv(n)
signifie “recevoir au maximum n octets”. Ecrire une fonctionreally_recv(s, n)
qui prend en argument une socket et un entier n et qui renvoie exactement les n premiers octets reçus sur la socket. A l’intérieur de la fanctionreally_recv
, il faudra donc lancer plusieurs fois la fonction recv() jusqu’à avoir reçu très exactement n octets. Vous pouvez ajouter des arguments à la fonction si vous le souhaitez.Utilisez cette nouvelle fonction dans
newserver2.py
pour remplacerrecv
.Est-ce que
client3.py
est compatible avecnewserver2.py
? Justifier
TROISIEME RENDU: Le nouveau fichier newserver2.py
et la réponse aux questions dans un fichier README