ISS7AE - Networks
Networks
Responsable : Laurent CIARLETTA, Maître de Conférences
Laurent.Ciarletta@mines.inpl-nancy.fr
Durée du module : 21 heures
Crédits ECTS : 2
Mots clés : Réseaux, protocoles
Pré-requis : Notions de programmation, de système
Objectif général : Connaissances théoriques et pratiques des réseaux informatiques et leurs applications
Programme et contenu :
Il s'agit d'acquérir une compréhension générale du fonctionnement d’un réseau de communication, afin d’en comprendre les limites et les performances et d’être capable de l’exploiter dans un contexte applicatif de plus haut niveau.
Ce cours combine l’étude plus théorique de la famille de protocoles TCP/IP avec des séances de TD qui mettront l’accent sur la configuration de réseaux pour le routage, la programmation d’applications client-serveur ou la mise en place de services sous TCP/IP.
Thèmes abordés :
• Réseaux ; introduction, types de réseaux, notion de protocole, modèle en couches
• Réseaux TCP/IP ; protocoles ARP, IP, ICMP, TCP, UDP, multicast, routage, programmation client/serveur
• Services ; DNS, HTTP, SMTP, NIS, LDAP, SNMP
Biblographie :
Kurose and Ross, Computer Networking: A Top-Down Approach: International Edition, Pearson 2012
Tanenbaum, Computer Networks: International Edition, Pearson 2010
Pujolle et Salvatori, les réseaux, Eyrolles, 2010
Liens vers les PDF des cours :
- Cours 1
- Cours 2
- Cours 3
Node JS
Socket.io
-------------------------------------
TP Client Serveur
Première partie : clients et serveurs simples
Allez voir ici: 2017_AllInOne.zip
Exercice 1 : y a t'il quelqu'un pour me répondre ( écho!écho! écho! écho! )
Vous allez programmer votre premier client réseau. Pour cela, partez des fichiers d'exemple et modifiez les si nécessaire.
Exercice 2 : votre propre serveur d'écho
Programmez votre premier serveur d'écho. Testez le contre votre serveur/
Terminer proprement les connexions
Pour l'instant, vous fermez probablement les connexions de manière assez radicale.
Faites en sorte que si le message que vous envoyez au serveur est "quitter" ou "Quitter" ou "QuIttEr", celui-ci ferme tout proprement.
Exercice 3 : un client et un serveur multi-usage
Modifiez votre serveur (et si besoin est votre client) pour qu'il puisse répondre à un certain nombre de questions :
- l'heure
- le jour
- qui est là?
- tirer un entier au hasard
- Une bonne blague
- quel temps fait il? (tiré au hasard dans une liste de réponses possibles
- la somme de 2 entiers
- etc...
Pour ce faire vous allez devoir envoyer des commandes. Il s'agit de faire comme avec la commande "quitter" précédente
Deuxième partie : aller plus loin
Exercice 4 : pierre - papier - ciseaux
Programmez une application client - serveur selon le jeu bien connu "pierre - papier - ciseaux".
Dans un premier temps, vous jouez contre l'ordinateur (le serveur) qui tirera au sort sa réponse.
Vous pouvez remarquer qu'il est assez facile de faire un serveur qui triche!
Vous pouvez ajouter la possibilité de compter le score, de faire des statistiques sur le nombre de victoires, voire de rendre le serveur intelligent si vous pensez avoir une bonne stratégie (dans ce cas vous pouvez vérifier celle-ci en créant un client automatique affrontant votre serveur intelligent ou réciproquement.
Troisème partie (pour ceux qui avancent vite): un client graphique et/ou un serveur qui répond à plusieurs clients
Exercice 5 : pierre - papier - ciseaux contre un adversaire humain
Il s'agit maintenant de faire en sorte que votre client et votre serveur (le serveur est celui avec qui un autre joueur se connecte) soient manipulés par des utilisateurs humains de manière interactive.
Exercice 5 bis: pierre - papier - ciseaux graphique
En utilisant ce que vous avez vu les semaines passées, programmez le jeu de manière graphique.