Dans ce sujet, nous vous demandons de r�aliser deux versions d'un serveur HTTP en utilisant la biblioth�que Java NIO.
Commencez par cr�er un nouveau projet Java dans votre environnement Eclipse que vous appellez tpnote-VotreNom. Cr�ez aussi dans cette arborescence du projet un fichier readme.txt dans lequel vous mettez vos notes et les r�ponses aux questions.
Le bar�me est donn� � titre d'indication.
Les exercices sont assortis de questions de compr�hension auxquelles vous devez r�pondre par �crit dans le fichier readme.txt.
En fin de TP :
Objectif : compl�tez des classes qui permettent de r�aliser un serveur HTTP simple.
Notre serveur HTTP est tr�s simple. Il est capable de d�coder
une requ�te de type GET
. Une requ�te de
type GET
est constitu�e d'un ligne contenant le
mot GET
suivi d'un chemin (URI) correspondant au
nom du fichier. Pour faire simple, les noms de fichiers sont trait�s �
partir du r�pertoire /mci/inf/chris/public_html/.
La premi�re version du protocole traite les requ�tes une par une et cl�t le canal de connexion apr�s chaque traitement. Elle correspond au protocole 1.0 de HTTP.
Cr�ez un paquetage www dans votre project Eclipse.
R�cup�rez les classes suivantes et mettez-les dans le paquetage www :
R�cup�rez la classe Httpd10Base.java et mettez-la dans le paquetage par d�faut.
Vous devez modifier le Worker en compl�tant les TODOs et r�pondre aux questions.
rwChan
;
rwChan
.
Vous devez modifier le serveur en compl�tant les TODOs et r�pondre aux premi�res questions qui suivent.
ServerSocketChannel
et
un SocketChannel
;
ServerSocketChannel
que l'on ne peut pas faire sur un SocketChannel
?
SocketChannel
que
l'on ne peut pas faire sur un ServeurSocketChannel
?
Vous pouvez tester votre serveur soit en utilisant votre navigateur
habituel, soit en utilisant telnet
comme dans l'exemple
suivant :
telnet localhost 2020 GET /index.html HTTP/1.0
Vous devez obtenir une r�ponse contenant du code HTML, dont l'ent�te ressemble � ceci :
HTTP/1.0 200 OK Content-Type: text/html Content-length: 2741 Connection: close
Si vous essayez avec un fichier qui n'existe pas, par exemple test.htm, vous devez obtenir un r�sultat ressemblant � :
HTTP/1.0 404 File Not Found
Une fois que vous avez test� le serveur r�alis� � la section pr�c�dente, r�pondez aux questions suivantes :
/mci/inf/chris/public_html
?
Le serveur pr�c�dent ferme les connexions � chaque requ�te, ce qui pour une page faisant r�f�rence � des images sur le m�me site implique des ouvertures successives de canaux TCP de mani�re inutile.
Vous allez maintenant r�aliser une version de serveur qui accepte de fournir plusieurs contenus sur le m�me canal ouvert.
R�cup�rez le squelette de la classe Http11WorkerBase.java et mettez-la dans le paquetage www.
R�cup�rez la classe Httpd11Base.java et mettez-la dans le paquetage par d�faut.
R�pondez aux questions suivantes puis r�alisez les modifications au niveau des classes :