Communication client-serveur PACT 2016 Encadrement Informatique
Objectif Communication entre deux programmes Java tournant sur la même machine Les options ci-dessus entre deux PC différents, ou entre un appareil Androïd et un PC, ou entre deux appareils Androïd Les options ci-dessus avec des programmes écrits dans des langages différents (ex: Java et C/C++) Les options ci-dessus avec plus de 2 entités communicantes Les options ci-dessus utilisant Internet/Wifi ou bluetooth Une communication simple commande/réponse en texte Une communication plus complexe incluant aussi des transferts de ressources Une communication à débit plus élevé nécessitant l’utilisation d’un format binaire Une communication utilisant un protocol standard comme HTTP 17/11/16 Communication Client Serveur
Objectifs pédagogiques du module Savoir communiquer entre deux programmes tournant sur 1 ou 2 machines en utilisant le réseau Définir le bon niveau de communication et les éléments du dialogue en fonction du contexte 17/11/16 Communication Client Serveur
Architecture du module Appareil 1 Appareil 2 module module Client Serveur module module API Client API Serveur module module 17/11/16 Communication Client Serveur
Livrables Document: étude complète des échanges Nature (type des données) Fréquence Taille Contraintes (débit, utilisation d’un navigateur, …) Synchrone – asynchrone ? Liste exhaustive des commandes et réponses Code: Java réalisant une communication de messages entre deux nœuds (initialisation de l’interface, formatage et décodage de messages simples) Document: étude des bibliothèques à utiliser et des interfaces du client et du serveur pour les autres modules Option: Code client Android / Python / C++ Code: final (référence Git) 17/11/16 Communication Client Serveur
Guide Commandes avec des paramêtres simples + réponses textuelles courtes Extension du Knock Knock Transferts binaires simples Commandes avec des paramêtres complexes et / ou réponses complexes, transferts binaires ou mixtes HTTP (plus lourd à mettre en oeuvre) Client Android App + Navigateur (pour iOS) HTTP + JSON 17/11/16 Communication Client Serveur
Livrable 1 Document: étude complète des échanges Nature (type des données) Fréquence Taille Contraintes (débit, utilisation d’un navigateur, …) Synchrone – asynchrone ? Liste exhaustive des commandes et réponses Plus vous avez d’informations, plus j’aurai l’impression que vous avez compris :D Livrable = le document word ou pdf envoyé par email avec le titre PACT-XY-clientServeur-livrable2 17/11/16 Communication Client Serveur
Livrable 2 Faire le tutoriel Knock Knock Server https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html Livrable = le code et un log d’execution, dans un zip, envoyé par email avec le titre PACT-XY-clientServeur-livrable2 17/11/16 Communication Client Serveur
Livrable 3 Interface de la partie serveur Interface de la partie client Question: Connection permanente ? Modification du code en conséquence Extension pour clients multiples (option) Une connection réutilisée ? Autant de ports et de Thread que de clients ? Bibliothèque à utiliser (option) Protocole HTTP Livrable = le document word ou pdf envoyé par email avec le titre PACT-XY-clientServeur-livrable3 17/11/16 Communication Client Serveur
Livrable 4 Pour android, demandez au binome android de vous faire une classe pour intégrer votre travail Pour un autre langage, traduisez un des cotés du Knock Knock Testez Livrable = le code et un log d’execution, dans un zip, envoyé par email avec le titre PACT-XY-clientServeur-livrable2 17/11/16 Communication Client Serveur
Evaluation 2 notes: Janvier: L1 à L4 Avril: L5 17/11/16 Communication Client Serveur
Livrable 5 Code final Dans le git Communication Client Serveur 17/11/16 Communication Client Serveur