:: Enseignements :: Master :: Master TTT :: 2012-2013 :: Programmation réseau en Java ::
[LOGO]

Premiers pas en TCP


Exercice 1 - Un client TCP netcat-like

On ne présente plus netcat : on souhaiterait maintenant implanter un client TCP en Java avec un comportement similaire. On implante à cet effet une classe fr.upemlv.javares.TCPTextClient pouvant être exécutée avec la commande :
java fr.upemlv.javares.TCPTextClient serverAddress port charset
Ce client créé une socket TCP locale se connectant sur le serveur distant de coordonnées spécifiées. On lit une ligne sur l'entrée standard (System.in), on l'envoie vers le serveur distant en l'encodant avec le charset spécifié puis on lit une ligne de réponse en provenance du serveur. On répète ce cycle jusqu'à ce que soit l'utilisateur ferme l'entrée standard (Ctrl-D en console), soit le serveur mette fin à son flux sortant. On peut alors fermer la socket locale.

Exercice 2 - Un serveur TCP torturant les lignes

Il est question désormais d'implanter un méchant serveur TCP torturant des lignes de texte. Ce serveur antipathique traite les clients les uns à la suite des autres. Un client lui communique une ligne de texte, le serveur la transforme et renvoie la ligne modifiée au client, ..., on répète le processus jusqu'à recevoir une ligne "QUIT" : on ferme alors (proprement) la connexion après avoir envoyé une ligne d'au revoir au client. On peut alors ensuite accueillir le client suivant en attente.

Nous avons carte blanche pour les opérations de torture imposées aux lignes (mises en majuscule, substitutions de lettres...).

Exercice 3 - Le nombre mystère

Le jeu du nombre mystère consiste à deviner un nombre tiré aléatoirement. Nous réalisons un serveur qui accueille un client souhaitant jouer : le serveur tire un nombre au hasard et le client envoie ses propositions. Chaque proposition est un entier int sur 4 octets transmis en commençant par l'octet de poids fort (par exemple l'entier 424242 en base décimale s'écrit 00067932 en hexadécimal : on transmet l'octet de poids fort 0, puis 06, puis 79 puis 32). En retour le serveur nous indique par un octet si l'on a trouvé le nombre mystère (0), si le nombre mystère est plus petit (1) ou s'il est plus grand (2). Si le client n'a pas trouvé le nombre, il continue de faire des propositions.