Petit projet de Réseaux
IUP2 --- Réseaux
3 avril 2002
Nous allons consacrer à ce projet les prochaines séances de TP. Vous devez mettre tous les fichiers que vous écrirez dans les répertoires /ens/coulbois/apache/htdocs/nom_de_login/ et /ens/coulbois/apache/cgi-bin/nom_de_login/ et me laisser les droits de lecture de ces répertoires.
Les différents programmes doivent être écrits en Java. Ceci suppose une réflexion préalable sur les classes et les hiérarchies que vous utiliserez.
Objectif :
Une entreprise possède un parc automobile réparti entre ses deux succursales (à Lenteja-sur-Seine et à Nivose-les-bains). Elle veut permettre à ses employés de réserver une voiture pour la journée. Pour cela elle se propose d'utiliser son réseau informatique et fournir une page web permettant la réservation. Cette page web est située sur son serveur principal (lenteja:8081) mais les listes de voitures disponibles sont gérées indépendemment dans les deux succursales (lenteja et nivose).
Détails pratiques :
- La liste des voitures est un fichier texte dont un exemple est fourni par /ens/coulbois/apache/htdocs/voitures.txt. Vous ne devez pas, bien sûr, utiliser le fait que les fichiers sont partagés entre nivose et lenteja. Utilisez deux fichiers distincts.
- Chaque voiture est identifiée par son modèle (clio, 205, etc.), son numéro d'immatriculation, et sa disponibilité (Libre ou Réservée).
- Par défaut on essayera d'abord de réserver une voiture sur lenteja.
- La communication entre les processus sur lenteja et sur nivose se fera au moyen de sockets.
Étapes :
- Écrire un formulaire HTML permettant de réserver une voiture en précisant éventuellement son modèle, son numéro d'immatriculation et le lieu de réservation.
- Spécifier le format d'une demande de réservation émise par le formulaire ci-dessus. Chaque employé peut soit réserver une voiture précise (en donnant son numéro d'immatriculation) dans une succursale précise, soit utiliser des jokers en ne précisant que le modèle voulu ou que la succursale ou en ne précisant rien.
- Écrire le CGI client qui reçoit la demande de réservation émise par le formulaire ci-dessus, interroge les centrales de réservations sur lenteja et/ou nivose et informe l'employé du résultat de sa demande. Il faut traiter simultanément la question suivante.
- Spécifier le protocole de communication entre le programme client et les centrales de réservation. Chaque centrale doit répondre à une demande de réservation en précisant si celle-ci a réussi et dans ce cas en détaillant la voiture réservée ou en signalant un échec.
- Écrire le programme de la centrale de réservation des succursales. Ils reçoivent les demandes envoyés par le CGI client, traite sa demande et modifie en conséquence le fichier qui contient la liste des voitures disponibles. Vous ferez attention à l'accès concurrent sur les fichiers.
Extensions :
- Prévoir une procédure pour signaler le retour d'une voiture.
- L'entreprise peut-elle s'aggrandir en ouvrant d'autres succursales ?
- Prévoir les pannes des centrales de réservation des succursales et du réseau (au moyen de timeout).
- Protégez le système de réservation contre les plaisantins, en limitant l'accès aux employés connectés sur le réseau local, en gardant une trace de chacune des demandes (date, provenance).