* Info diverses String s; s.length() retourne le nombre de chars utiles byte[] b; b.length retourne le nombre de bytes déclarés ("remplis" ou non) * Utilisation de l'API - Allez à l'adresse http://java.sun.com/j2se/1.4.2/docs/api/ (l'API de Java SE) et mettez-la dans les bookmarks du navigateur. Vous en aurez besoin chaque fois que vous voulez savoir les informations sur les classes et méthodes Java. - (si vous installez le paquet libgcj-doc, vous avez une copie de l'API dans file:///usr/share/doc/libgcj-doc/html/index.html) - En regardant dans l'API le résumé de la classe DatagramPacket, écrivez une phrase sur ce que représente un objet de type DatagramPacket. - Pareil pour DatagramSocket. - En regardant l'API, trouvez l'en-tête (les paramètres d'entrée et de sortie) des méthodes Integer.parseInt et String.valueOf. - var est une variable String et contient l'adresse IP d'une machine, comment récupérer le nom de la machine dans un String ? Faire aussi l'inverse. - Que faut-il écrire après "s.receive(p);" pour : - afficher l'adresse IP de l'émetteur du paquet p - afficher le nom de l'émetteur - afficher le port de l'émetteur - est-ce que l'adresse de destination du paquet p est toujours identique à une des adresses IP de la machine destinataire ? * UDP simple - Faire un programme client qui envoie une chaîne de caractères, ensuite il s'arrête, et un programme serveur sur la même machine, qui affiche la chaîne de caractères qu'il reçoit, ensuite il s'arrête. - Modifier le programme serveur pour qu'il reste à l'écoute indéfiniment. - Modifier le client pour qu'il envoie un paquet contenant "ping" comme données, ensuite un autre paquet avec "pong", ensuite il s'arrête. Le tester avec le programme serveur précédent. - Modifier le serveur afin qu'il réponde "ping" quand le client lui envoie "pong" et vice versa. Pour pouvoir tester ce nouveau serveur, modifier aussi le client en le faisant afficher le messages reçu. - Modifier le client pour qu'il envoie le message à la machine de votre collègue et tester soit avec votre programme à copier sur sa machine, soit avec le serveur de votre collègue. * UDP et broadcast - Faire un client qui envoie un message à l'adresse broadcast de votre réseau. - Faire un serveur qui écoute sur le port 40000 et qui affiche tout ce qu'il reçoit. Laissez-le tourner, il devrait afficher les messages de tout le groupe TP (comme un chat). * UDP, jeton Faire un programme qui déplace un jeton de machine en machine. L'appel à ce programme sera "java Jeton nom portlocal portdistant 1", pour la machine qui lance le jeton, et "java Jeton nom portlocal portdistant 0", pour les autres machines, où nom est le nom de la machine suivante. Chaque machine (sauf la première, qui commence avec la deuxième étape) exécute cycliquement : - attente du jeton ; - affichage du texte "Jeton recu de la machine de nom ... et d'adresse IP ..., le port distant est ..." ; - attente de trois secondes (Thread.sleep (3000)) ; - affichage du texte "Jeton renvoye a la machine de nom ... et d'adresse IP ..., le port distant est ..." ; - transmission du jeton à la machine suivante. * TCP Un serveur TCP envoie à chaque client qui s'y connecte un petit message (par ex. "Bonjour"), suivi de 10000 octets (les octets sont choisis au hasard). Le serveur se remet à l'écoute. Le client affiche le message et le nombre d'octets reçus. - Que faut-il rajouter pour que le client puisse distinguer le message du reste des données ? - Est-il nécessaire, comme en UDP, que le client lui envoie un message (paquet) pour que le serveur sache l'adresse/le port du client ? - Écrivez le serveur et le client.