:: Enseignements :: ESIPE :: E4INFO :: 2009-2010 :: Java Réseau II - Applications réseaux ::
[LOGO]

Interface réseau, Adresse et type d'adresse IP, appel au DNS, UDP


Exercice 1 - My name is 159.88, 193.50.159.88

Écrire un programme Java qui réalise les opérations suivantes :
  1. Récupérer et afficher l'ensemble des interfaces réseaux (NetworkInterface) de la machine courante.
  2. Afficher l'adresse IP que vous utilisez pour communiquer avec la machine locale, ainsi que le nom de l'interface réseau à laquelle cette adresse est associée.

Exercice 2 - Bonnes résolutions

  1. Écrire un programme Java qui permet d'afficher les noms et adresses IP des machines suivantes :
    1. la machine connue sous le nom www.univ-mlv.fr ;
    2. la machine dont l'adresse IP est 193.55.63.80 ;
    3. la machine dont l'adresse IP est 300.55.63.80.
  2. Indiquer pour ces machines s'il y a résolution de nom ?
  3. Quel est le nom canonique de www.univ-mlv.fr ?
Nous allons maintenant écrire un autre programme affichant des informations sur l'adresse IP d'une machine particulière passée en argument.

  1. Écrire un programme qui affiche le nom et l'adresse d'une machine passée en argument. L'argument pourra être soit une adresse IP soit un nom de machine.
  2. La méthode InetAddress.isReachable() permet de tester si une machine est atteignable sur le réseau. Ajouter cette information à votre programme.
    Utiliser votre programme pour savoir si les machines www.w3.org et www.google.fr sont "atteignables" à partir de la machine locale.
    Qu'en déduisez vous sur l'implantation de cette méthode en mode utilisateur ?
  3. Modifier le programme pour qu'il affiche si une adresse IP est une adresse multicast, de loopback ou publique (attention petit piège).
  4. Une machine (par exemple, un routeur) peut avoir plusieurs adresses IP. Comment connaître, par exemple, toutes les adresses de www.w3.org. Modifier votre programme en conséquence.

Exercice 3 - Client echo UDP

Écrire un client UDP permettant d'interroger le démon Echo (RFC 862) qui est accessible sur le port 7 d'une machine host. Vous pouvez tester ce service en lancant la commande nc -u gaspard 7. On attend un fonctionnement du type :
   $ java EchoUDPClient gaspard "Mon beau message, roi des machines"
   socket locale attachée :
   à l'adresse 0.0.0.0/0.0.0.0
   au port 1044
   34 octets émis vers gaspard/193.55.63.81
   capacité de la zone de stockage : 44
   34 octets recus

   contenant : Mon beau message, roi des machines
   provenant : de gaspard.univ-mlv.fr/193.55.63.81:7
   
Vous utiliserez pour cela les classes java.net.DatagramSocket et java.net.DatagramPacket. Etant donné le protocole echo, on utilisera l'encodage par défaut de la machine cliente lors de l'envoi et de la réception des messages.

Exercice 4 - Respecte mon encodage

On souhaite écrire un client UDP permettant d'interroger un serveur de mise en majuscule qui ne prend en charge que les chaînes de caractères encodées dans un encodage précis. Pour se faire récupérez le serveur UDPupperCaseServer.jar et lancez le sur votre machine avec un encodage différent de celui par défaut (e.g. Latin1 si vous êtes sous UTF8 et inversement).

Vous pouvez tester avec netcat que si l'encodage de la machine cliente et celui précisé au lancement du serveur correspondent, la mise en majuscule s'effectue sans problème. Mais que dans le cas où ils ne correspondent pas la mise en majuscule ne s'effectue pas (e.g. pour les lettres accentuées).

Écrire un client UDP permettant d'interroger le serveur de mise en majuscule lancer sur un port donné d'une machine host. On attend un fonctionnement du type :
   $ java EncodedUDPClient 10.2.5.10 7777 "Autant arrêter le Java si c'est pour ça!" Latin1
   socket locale attachée :
   à l'adresse 0.0.0.0/0.0.0.0
   au port 1044
   34 octets émis vers 10.2.5.10/10.2.5.10
   capacité de la zone de stockage : 44
   34 octets recus

   contenant : AUTANT ARRÊTER LE JAVA SI C'EST POUR ÇA!
   provenant : de 10.2.5.10/10.2.5.10:7777
   

Transformez votre code pour lire les chaînes de caractères au clavier et permettre plusieurs mises en majuscules.