Cyril Rabat


TP n°8 : les sockets en mode connecté

Le but de ce TP est de manipuler les sockets en mode connecté en Java. Nous allons réaliser différentes applications distribuées qui pourront être exécutées localement ou testées sur plusieurs postes.

 

Avant de commencer le TP, n'oubliez pas de tester les différents programmes d'exemple concernant les sockets en mode TCP :  Sockets en Java.

Prise en main de TCP

Nous souhaitons écrire une application distribuée constituée de deux applications. La première, nommée serveur, écoute sur un numéro de port donné (spécifié dans le fichier de configuration) et se met en attente de réception de messages (une chaîne de caractères, dans un premier temps). Dès qu'un message est reçu, il est affiché à l'écran. La deuxième application, nommée client, envoie un message au serveur, le message étant lu au clavier. L'adresse IP et le numéro de port du serveur sont spécifiés dans son fichier de configuration.

Questions

  1. Écrivez les applications et vérifiez leur fonctionnement.
  2. Cette application distribuée fonctionne-t-elle sur le modèle de communication client/serveur ?
  3. Que se passe-t-il si le serveur n'est pas démarré et qu'un client envoie un message ?
  4. Cette fois-ci, nous souhaitons envoyer un message au format JSON. Modifiez vos applications.
  5. Le serveur retourne maintenant un accusé de réception au client (toujours au format JSON). Si le message est trop petit (plus petit que 5 caractères) ou trop grand (plus grand que 20 caractères), un code et un message d'erreur sont envoyés. Sinon, un code et un message d'accusé de réception sont envoyés.
  6. Quelle est la différence entre un envoi d'une chaîne de caractères correspondant à un document JSON et un envoi d'un objet JSONObject sérialisé ? À votre avis, quel est le meilleur choix ?

Un peu plus loin avec TCP

Nous souhaitons modifier maintenant le client pour qu'il fonctionne indéfiniment (arrêt avec un CRTL+C). À chaque fois, le message envoyé est lu au clavier. Le serveur tourne également indéfiniment.

Questions

  1. Modifiez le client et le serveur. Vérifiez leur bon fonctionnement.
  2. Que se passe-t-il si plusieurs clients sont exécutés en même temps ?
  3. Nous souhaitons que les messages des différents clients s'affichent immédiatement. Pour distinguer les clients, on affiche leur adresse IP et leur numéro de port suivis du message. Modifiez le code du serveur.

Il est fier mon navire, il est beau mon bateau

Nous souhaitons reprendre l'application de gestion d'un port développée dans le TP précédent et ajouter la fonction de transfert d'un bateau d'un port à un autre. Pour cette action, on précise le port de destination. L'application se connecte alors à l'application de destination pour transférer le bateau.

Questions

  1. Quels sont les éléments à mettre en place ? Proposez une modélisation de l'application et des messages échangés.
  2. Comment l'application de gestion de port peut-être à la fois écouter les requêtes UDP et les requêtes TCP ?
  3. Modifiez votre application et vérifiez son bon fonctionnement.

Outils


Version de cette page Dimanche 4 Novembre 2018

© Cyril Rabat 2018

Connexion

Mot de passe perdu

Dernières nouvelles

16/11/2018 Les inscriptions pédagogiques pour le second semestre auront lieu à partir de la semaine prochaine. Vous serez prochainement contacté(e) par vos tuteurs.
16/11/2018 Du tutorat de consolidation pour MA0102 est prévu dans la semaine du 10/12. Les étudiants intéressés doivent contacter le responsable de la formation.
09/11/2018 Le planning des examens (EET) est disponible sur la page dédiée. Pour rappel : pas d'EET en L1 et semaine d'examens pour les L2 et L3 en semaine 51 (calendrier anticipé).
01/10/2018 Les emplois du temps sont maintenant accessibles depuis la page de la scolarité.

Contact

Courriel :
cyril.rabat [at] univ-reims.fr

Téléphone :
+33-326-91-33-81

Fax :
+33-326-91-33-97

Facebook :
lien Facebook direct