Académique Documents
Professionnel Documents
Culture Documents
TP1 1
TP1 1
M2 II
Protocole Internet
TP1
On veut créer une application client/serveur qui permet de savoir si une machine
est active. Cette application utilise des sockets TCP.
1. • Le serveur attend une requête du client sur le port 1027 et lui envoie
un message (par exemple contenant l’heure locale). Le serveur doit
donc être capable de gérer plusieurs clients simultanément.
• Le client lit une adresse au clavier et envoie une requête au serveur
de la machine correspondante pour savoir si elle est active. Dans
l’affirmative, il affiche le message envoyé par le serveur.
1
Exercice 2: Application Pair-à-Pair
2
static String getString (ByteBuffer b, int len) {
byte[] t = new byte[len] ;
b.get (t) ;
return new String (t, 0, len) ;
}
La conversion de String vers byte[] se fait par la méthode getBytes().
3
System.out.println ("reception de " + s.receive (b) + " : "
+ getString (b, b.limit())) ;
}
}
Pour pouvoir discuter clairement les uns avec les autres de manière plus
robuste, on utilise un format particulier de message :
seq est un numéro de séquence (sur 2 octets) incrémenté par l’envoyeur chaque
fois qu’il envoie un paquet.
taille est la longueur du message qui suit sur 2 octets.
message c’est la suite des caractères du message.
Le protocole indique que tous les messages correctement formés suivant la de-
scription ci-dessus seront affichés dés qu’ils sont reçus (on ne se préoccupe pas
ici de vérifier le champ seq).
6. Écrire l’application de discussion avec un thread pour la réception des
messages, le thread principal étant dédié à l’envoi.
7. Dans une application réelle de discussion sur Internet, des paquets peu-
vent être perdus ou déséquencés, notamment en cas de congestion dans le
réseau.
(a) Définissez un protocole ( en ajoutant de nouveaux types de messages)
pour signaler la perte du message à son émetteur et demander la
réémission des paquets perdus. Lors la définition de ce protocole vous
aurez des choix à faire: quand, à qui et combien de fois demander
la réémission d’un paquet, dans quel ordre afficher les messages, que
faire en cas de message non reçu... Justifiez les choix que vous avez
faits.
(b) Réalisez une application suivant le protocole que vous avez défini.
(c) Testez votre application en émulant des pertes des messages et des
dé séquencés.