Académique Documents
Professionnel Documents
Culture Documents
1
Exer
i
e 3 : Appro
he évènementielle
Le serveur de dialogue de l'exer
i
e pré
édent gère les
onnexions TCP simultanées en
réant un
Thread par
onnexion. Cette solution est sous-optimale. En eet, lorsqu'un
lient se
onne
te, un nouveau
Thread est
réé et est maintenu (passant la majeure partie de son temps en attente de messages) pendant
toute la session du
lient. Un serveur
onstruit ave
ette appro
he verra sa
onsommation mémoire
exploser ave
le nombre de
lients gérés simultanément.
Une solution à
e problème s'appuie sur l'utilisation des NIO (New I/O) de java. Construites à partir de
la primitive POSIX sele
t(), les NIO permettent (entre autres) de réaliser une attente sur un ensemble
de
onnexions TCP. Il devient alors possible de gérer toutes les
onnexions dans un unique Thread.
L'attente d'évènements peut se faire de manière a
tive ou passive. L'attente a
tive
onsiste à s
ruter
en permanen
e l'arrivée d'informations à traiter. Elle provoque une forte
onsommation des ressour
es du
pro
esseur (qui bou
le en permanen
e). L'appro
he passive utilise une primitive qui se bloque en attente
de données à traiter. Pendant
e blo
age, le pro
essus est ina
tif et libère le pro
esseur. C'est pourquoi
il vous est demandé d'implémenter le serveur de
hat en utilisant des attentes passives.
N.B. : Pour réaliser
e programme, il faudra utiliser le pa
kage java.nio ainsi que (entre autres)
les
lasses ServerSo
ketChannel, Sele
tor et Sele
tionKey. La do
umentation des NIO est disponible
en ligne à l'URL : http: // java. sun.
om/ j2se/ 1. 4. 2/ do
s/ api/ java/ nio/ pa
kage-summary.
html .
Q 1 . Comment gérer l'arrivée de nouvelles
onnexions ?
Q 2 . Comment gérer la retransmission des messages reçus aux utilisateurs ?
Q 3 . Critiquer la manière dont
e serveur est réalisé :
qu'en est-il de l'usage du réseau ?
quelle démar
he adopter en utilisant toujours IP ?
sera t'il en
ore possible d'utiliser Telnet en guise de
lient ?