[t]40ex
UniversitéPierre & Marie Curie
U.F.R d'infomatique
[t]45ex
Maîtrise -- 2000-01
Programmation Objet et Distribution
Tavaux dirigés n° 9
Exercice I L'inévitable "hello"
On veut écrire un serveur ``générique'' pour l'instancier sur
le service hellod (voir TD n° 6). On se donne pour cela
les deux classes suivantes :
abstract class ServiceObject
{ abstract void fun(Socket sock); }
class Service extends Thread {
Socket sock;
ServiceObject sobj;
Service(Socket sock0, ServiceObject sobj0)
{ sock = sock0; sobj = sobj0; }
public void run() { sobj.fun(sock); }
}
Question (I.1) Écrire une classe Serveur
, sous-classe de Thread
possédant trois champs :
int port
, numéro de port du service ;
ServiceObject sobj
, ``fonction'' de service ;
ServerSocket sock
, socket de connexion.
La socket de connexion est crée par le constructeur qui
démarre également le serveur. La boucle d'attente de connexions et
la création du processus de service (instance de Service
)
sont réalisés par la méthode run
.
Question (I.2) Écrire une classe HelloService
, sous-classe de
ServiceObject
dont la méthode fun
implante la fonction
de service hello
.
Question (I.3) Écrire la classe principale Hellod
dont la méthode
main
lance le serveur hello
. Le numéro de port est lu
sur la ligne de commande.
Question (I.4) Écrire la classe principale du client Hello
dont la
fonction main
implante le client hello
. L'adresse du
serveur et le numéro de port du service sont lus sur la ligne de
commande.
Exercice II Un lecteur d'URL
Écrire une classe (réduite àla méthode main)
permettant de lire les dix premières lignes de la page
d'entête de http://www.lip6.fr
.
On utilisera les classes URL
, URLConnection
et
LineNumberReader
.
Exercice III Un CGI et son client
Question (III.1) Écrire un programme qui lit une ligne sur l'entree standard,
teste qu'elle commence par la chaîne "string="
et si c'est
le cas, récupère le suffixe (ie sous-chaîne aprés le
'='
) et écrit sur la sortie standard la chaîne
"Content-type: text/plain\n\n"
suivie du miroir du suffixe.
Question (III.2) Écrire un programme qui prend en argument (sur la ligne de
commande) une chaîne, ouvre une connexion avec une URL, expédie
àcelle-ci une chaîne formée du préfixe "string="
et
de l'argument lu, lit la réponse et l'affiche.
This document was translated from LATEX by HEVEA.