Sockets TCP avec multiples clients en Java
Application à réaliser
Le but de ce TP est de réaliser en Java une application
distribuée de type client/serveur avec comme support de
communication les sockets TCP.
Le serveur gère une liste de personne. Une personne est définie
par 2 informations : son age et son nom (mêmes informations que
pour le TP1). Le serveur attribue à chaque personne un
identificateur unique.
Un client peut effectuer plusieurs requêtes :
- Proposer l'ajout d'une personne dans la liste gérée par le
serveur. Si la personne existait déjà, le serveur ne fait pas
d'ajout. Le serveur retourne ensuite au client l'identificateur de la
personne (identificateur généré si la personne était
nouvelle).
- Demander l'identificateur d'une personne en envoyant les
informations sur une personne au serveur. Si la personne n'existe pas,
le serveur retourne -1.
- Récupérer les informations concernant une personne à
partir de son identificateur. Si le client n'existe pas, une valeur
particulière est retournée par le serveur.
L'implémentation des opérations de gestion de personnes est déjà faite via les classes suivantes :
Plusieurs clients doivent pouvoir être connectés
simultanément au serveur.
Aides
Il y a 2 points importants à traiter :
- Assurer la gestion de plusieurs client simultanément. Pour
cela, il faudra avoir un fonctionnement multi-threadé du
serveur. Attention alors aux accès concurrents aux données du
serveur.
- Le format des messages envoyés entre le serveur et le
client.
Modification pour invocation dynamique
Modifier votre programme pour que l'appel de la méthode
demandée par le client se fasse coté serveur via une invocation
dynamique. On utilisera pour cela un message générique pour la
requête d'appel et pour la valeur de retour.
Pour vous aidez dans cette implémentation, vous pouvez utiliser
les classes suivantes qui implémentent un mécanisme d'invocation
dynamique :