<<<M1 - UE2

UE2 - TP 2

Communication par socket


Exercice 2.1

Ecrire en Java une classe Client qui envoie à intervalle régulier des messages au serveur. On lancera le client avec un identifiant sous forme de chaine de caractères qu'il devra envoyer au serveur (localhost, port 7030).

java Client client1
send> atghijk
receive> ATGHIJK
send> jdkel
receive> ATGHIJK
...

Le protocole de communication depuis le client est le suivant :

CONNECT:client1
SEND:client1:atghijk
SEND:client1:jdkel
...
QUIT

L'instruction QUIT met fin au dialogue entre client et serveur.

Exercice 2.2

Ecrire en Java une classe Server (mono thread) qui permet d'accepter des requêtes en provenance de clients de manière à ce que tout message du client lui soit retourné en majuscule tant que la connexion est active ou que le client n'a pas mis fin au dialogue avec le serveur. Le serveur communiquera sur le port 7030.

java Server
receive:client1> atghijk
...

Exercice 2.3

Améliorer le serveur pour qu'il soit multi-thread et puisse donc accepter et traiter plusieurs tâches de différents clients en simultané. Tester le serveur avec deux clients.

java Server
receive:client1> atghijk
receive:client2> fhdjk
receive:client1> pmeabdhsd
receive:client1> ncjkjsd
receive:client2> hjha
...

Exercice 2.4

Modifier enfin le server pour qu'il accepte des requêtes de calcul en notation polonaise inverse. On utilisera l'utilitaire dc d'Unix pour réaliser les calculs.

dc -e "3 4 5 * + n"
23

Le caractère n indique que l'on doit afficher le résulat.