:: Enseignements :: Master :: M1 :: 2009-2010 :: Programmation d'Applications Réseaux ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Interfaces réseaux, adresses IP, résolution de nom, UDP |
Exercice 1 - My name is 159.88, 193.50.159.88
Écrire un programme Java qui réalise les opérations suivantes :
-
Récupérer et afficher l'ensemble des interfaces réseaux
(NetworkInterface) de la machine courante.
-
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 [à la maison]
-
Écrire un programme Java qui permet d'afficher les noms et adresses
IP
des machines suivantes :
-
la machine connue sous le nom
www.univ-mlv.fr
;
-
la machine dont l'adresse IP est
193.55.63.80
;
-
la machine dont l'adresse IP est
300.55.63.80
.
-
Indiquer pour chacune de ces machines s'il y a eu résolution de nom.
-
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.
-
É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.
-
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 ?
-
Modifier le programme pour qu'il affiche si une adresse IP est une
adresse multicast, de loopback ou publique (attention petit piège).
-
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 fr/umlv/net/udp/EchoUDPClient gaspard 7 "Mon beau message, roi des machines"
Datagram socket bound to 0.0.0.0/0.0.0.0:60080
Sending 34 bytes to the server gaspard/193.55.63.81:7
Reception storage capacity: 1024
Awaiting for the response ...
34 bytes received from /193.55.63.81:7 and containing:
Mon beau message, roi des machines
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 nc (option -u pour
l'envoi des informations par UDP) 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. Le client devra être codé proprement
(vérification des arguments, constructeur, méthode, etc)
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.
© Université de Marne-la-Vallée