Faire communiquer deux ordinateurs en utilisant des datagrammes de type UDP.
Ce TP est largement inspiré de l'excellent site de Madame Irène Sharon (ENST - Paris) dont vous trouverez à la BU le livre intitulé "Le langage Java : concepts et pratique" - Éditions Hermès (ISBN 2-7462-1212-9).
La communication par datagrammes consiste à avoir une machine en mode réception de message (sur un port UDP bien précis) et une autre en mode émission de message qui expédie un message texte sur le réseau à destination de la machine réceptrice. Il s'agit d'utiliser les sockets de datagrammes : les classes Socket et ServerSocket. C'est un protocole beaucoup plus simple que TCP/IP car il ne nécessite pas de vérification de la bonne réception du paquet ou de ré-émission en cas de problème. Bien entendu, c'est un mode de communication peu fiable pour les mêmes raisons.
Vous écrirez une application nommée EnvoiMessage qui traitera cette partie émettrice.
Vous écrirez une application nommée ReceptionMessage qui sera en charge de la réception.
Chaque service est associé à un port. Un port est une adresse numérique à l'aide de laquelle les requêtes de service (comme la demande d'une page Web par exemple) sont traitées. Il y a deux grands types de ports : les prts TCP et les ports UDP. Les plus utilisés sont les ports TCP et chaque service réseau est associé à un port. Les exemples sont nombreux :
|
Service
|
Port associé
|
|
daytime (pour l'horloge machine)
|
13 UDP
|
|
FTP (File Transfert Protocol)
|
21 TCP
|
|
Telnet (connexion à distance)
|
23 TCP
|
|
POP3 (récupération de mails)
|
22 TCP
|
|
WWW (World Wide Web)
|
80 TCP
|
|
...
|
...
|
Dans ce TP, nous utiliserons un port UDP pour faire communiquer nos machines. Sous Unix/Linux, les services et ports associés sont listés dans un fichier /etc/services. Sous DOS/Windows, vous pouvez avoir la liste des ports ouverts en exécutant la commande DOS : netstat -an qui retourne la liste numérique de tous les ports actifs sur la machine.
Par défaut, le FireWall Wondows XP bloque tous les ports qui ne sont pas explicitement ouverts. Pour ouvrir un nouveau port, il vous faut :
La manipulation ci-dessus a été faite pour vous sur vos machines de la salle B 2-3 puisque vous n'êtes pas Administrateur sur ces machines.
Après compilation de vos programmes, vous ouvrirez une fenêtre de ligne de commande (cmd.exe) et vous lancerez vos applications java (commande java).
L'application EnvoiMessage se charge d'envoyer un datagramme sur le port 4501 d'une machine dont le nom (par exemple type B23-15) doit être indiquée sur la ligne de commande. Le message doit être donné sur une ligne après avoir lancé la commande.
Le programme ReceptionMessage doit être lancé sans argument sur la machine destinatrice. Elle attend un message sur le port 4501, lorsque celui-ci est arrivé, elle affiche à l'écran le message reçu et la machine émettrice.
Vous pouvez faire des tests de votre machine à elle-même en ouvrant deux fenêtres de commande, l'une en réception, l'autre en émission. Vous pourrez ensuite tester entre vous avec des machines différentes.