Projet réalisé dans le cadre du cours Cloud Computing à l’UQAC.
L’objectif de ce TP est d’implémenter un serveur HTTP minimal et un client HTTP simple en Java, en utilisant des sockets TCP, sans bibliothèque HTTP externe.
-
ex2-server
Serveur HTTP minimal en Java.
Il écoute sur un port donné, traite des requêtes HTTPGETet renvoie des pages HTML (depuis le dossierwww/). -
ex1-client
Client HTTP simple en Java.
Il se connecte à un serveur HTTP, envoie une requêteGETet affiche le contenu HTML reçu sur la sortie standard.
- Ouvrir le projet dans IntelliJ ou Eclipse.
- Lancer la classe :
HttpServerApp - Le serveur écoute par défaut sur le port 8080.
- Page existante :
http://localhost:8080/(sertindex.html)
- Page inexistante :
http://localhost:8080/x.html(renvoie une page d’erreur)
- Le serveur renvoie
index.htmlsi le fichier existe dansex2-server/www/ - Sinon, il renvoie une page d’erreur HTML avec un code 401 (conformément à l’énoncé)
- Lancer la classe :
HttpClientApp
Le programme accepte (optionnellement) :
<host> <port> <path>
Si aucun argument n’est fourni, le client utilise des valeurs par défaut (ex. localhost, 8080, /index.html ou /x.html selon ta config).
- Page existante :
localhost 8080 /index.html
- Page inexistante :
localhost 8080 /x.html
Le client :
- se connecte en TCP au serveur
- envoie une requête HTTP
GET - affiche la status line (code HTTP)
- affiche le contenu HTML reçu sur la sortie standard
example.com 80 /example.com 80 /x.html
Remarque : certains sites (ex. Google/Amazon) redirigent vers HTTPS et peuvent répondre par des codes 301/302, ce qui est normal.
- Serveur local :
localhost:8080 - Serveur HTTP existant :
example.com:80 - Cas fichier existant :
200 OK - Cas fichier inexistant :
401(serveur local) /404ou autre (serveur public)
- Java
- TCP Sockets (
Socket,ServerSocket) - HTTP simulé manuellement (requêtes/réponses construites à la main)
Julien Larzul