[I] Introduction

Dans cet AGL (Atelier Génie Logiciel), nous allons découvrir ensemble les points clés de la programmation réseaux avec JAVA, plus précisément nous allons étudier et mettre au point une application serveur et une application client. Par la suite nous allons améliorer notre serveur de caractéristiques multitâches et multiservice.


[I-A] Outils

Nous allons utiliser pour cet atelier l'éditeur JAVA JCreator Lite téléchargeable gratuitement ici

Avant d'installer L'EDI JCreator, il est conseiller d'installer le JDK de SUN, pour notre atelier on utilisera le JDK6 update 11 téléchargeable ici


[I-B] Définitions


[I-B-1] Architecture Client-serveur

L'architecture client-serveur se base sur deux concepts ; le concept applicatif et le concept de communication ; la partie applicatif et composée elle même d'une application dite client et d'une application dite serveur, la partie communication se base principalement sur les sockets. Le principe de fonctionnement d'une telle architecture se présente comme suit : L'application cliente se connecte sur l'application serveur ; la connexion peut faire l'objet d'une authentification et elle peut être sécurisée par exemple via SSL ; une foi connectée l'application cliente envoie des requêtes à la partie serveur. Le serveur a son tours répond aux appels clients ; clients est au pluriel car le serveur peu gérer plusieurs clients en même temps (multitâches) ; il peut ainsi effectuer les contrôles nécessaires d'authentification et répondre a des commandes lancer par le client.


[I-B-2] Les Sockets

Un socket (traduit en "Connecteur réseau "), est une interface logicielle " apparue dans les systèmes UNIX " qui permet au développeur d'exploité les services d'un protocole réseau de manière facile et uniforme. Les sockets permettent ainsi de connecté deux entité logiciels et de leurs offrir la capacité d'envoyer et de recevoir des données entre elles.


[II] L'EDI JCreator


[II-A] Création du nouveau projet

Après avoir lancé JCreator, allez vers le menu File/New/Project comme représenter dans la figure 1.

figure1
figure1
L'assistant création de projet s'affiche (figure 2), sélectionnez l'option " Basic Java Application " puis appuyez sur le bouton " Next ".

figure 2
figure 2
L'assistant nous demande de spécifier le nom du projet dans le champ " Name " (figure 3), vous pouvez ou non dans cette fenêtre changer le dossier dans le quel sera enregistrer notre projet (le champ " Location "), une foi cette action effectuer cliquez sur " Next ".

figure 3
figure 3
A ce niveau, l'assistant nous demande de sélectionnez les librairies à utiliser dans notre projet (figure 4) ; une librairie est un ensemble de classes regrouper dans un fichier archive java " JAR " et dont le rôle est d'ajouter d'autres fonctionnalités a notre environnement de programmation ; pour notre projet on utilisera les librairies standard, donc on ne change rien à cette fenêtre et on clique sur " Next ".

figure 4
figure 4
Dans la fenêtre suivante (figure 5), l'assistant nous propose de choisir les outils de compilation à utiliser pour notre projet, on choisit l'option " Compiler " et on clique sur " Finish ".

figure 5
figure 5
L'assistant entame la phase de construction du nouveau projet (figure 6), une foi ces étapes terminées cliquez sur " Finish ".

figure 6
figure 6
Une foi la construction du nouveau projet terminer, JCreator nous affiche l'espace de travail avec le quel on doit entamer notre projet (figure 7).

figure 7
figure 7

[II-B] L'espace de travail de l'EDI

L'espace de travail de l'EDI JCreator est composer par :

  • Un explorateur de fichiers (figure 9) qui nous facilite la navigation entre les différents fichiers qui composent notre projet.
figure 9
figure 9
  • Un explorateur de Package et Classe (figure 10), qui nous permet de distinguer facilement les classes que constituent les packages de notre projet ainsi que les attributs et méthodes qui formes nos classes.
figure 10
figure 10
  • Un espace de codage, qui nous aide à manipuler le code de notre projet (figure 11).
figure 11
figure 11
  • Un OUTPUT qui nous permet de voir le résultat d'exécution de notre projet (figure 12).
figure 12
figure 12

[III] Le Serveur


[III-A] Généralités

Notre serveur sera composer de :

  • Un gestionnaire de connections.
  • Un gestionnaire de commandes.
  • Une interface d'implémentations de services.
  • D'un module d'écoute (Listener).
Ceci dit, notre application serveur sera donc composé de :

  • Une classe "Server".
  • Une classe "Listener".
  • Une classe "Connection".
  • Une classe "Control".
  • Une interface "Service".
L'interface " Service ", nous permet de construire des services et les injecter dynamiquement dans notre serveur. Il suffit d'écrire le code d'in service et de copier le fichier " .class " dans la racine du dossier des classes, c-a-dire dans le dossier contenant les fichiers classe.

Dans ce tutorial, nous allons écrire un service simple que vous pouvez l'utiliser pour écrire vos propres services, ce service nommé " salut " vous affiche un message salut devant un nom écrit en ligne de commandes.


[III-B] Principe de fonctionnement

Notre serveur offre un nombre ; définit au démarrage ; de connections clients, mais il offre une unique connexion de contrôle sur le port principal, et ce pour éviter des conflits de services. La connexion de contrôle offre à l'administrateur la possibilité de lancer et d'arrêter un service et de changer le nombre maximum de clients.

Ainsi, notre serveur sera muni d'un module d'écoute qui se charge de la détection des tentatives de connections clients, d'un module de gestion des connections, d'un vecteur dans le quel seront stocker les connexions en cours, d'un module de contrôle servant à la gestion des contrôles effectuer par la session de contrôle, d'un module service qui se charge de l'instanciation des services demander par les clients (figure 13).

figure 13
figure 13

[III-C] Codage


[III-C-1] Création d'une classe sous JCreator.