Informations générales
Dans cette unité d’enseignement nous nous emploierons à passer en revue les principales constructions nécessaires à la communication entre applications à travers le réseau. Il ne s’agit pas d’un cours de réseau, mais d’un cours de programmation réseau, c’est-à-dire un cours orientée communication. Donc la couche réseau la plus importante ici est la couche application, et par conséquent le contenu des messages et l’ordonnancement de ceux-ci plus que les techniques d’acheminement de ces messages.
Ce cours intitulé « programmation réseau » est à destination d’étudiants en Licence troisième année d’informatique de l’Université Paris Diderot. Le suivre suppose la maîtrise des langages Java et C (donc de la programmation objet).
Sont fournis ici, différents supports pédagogiques : cours, vidéos, codes sources, travaux pratiques et examens.
Une chaîne Youtube est associée à mes enseignements filmés dont celui-ci, programmation réseau, que vous pouvez consulter en vous reportant en bas de page
Le cours
Les supports en PDF
- 00 – Informations, quelques informations générales sur le cours
- 01 – Introduction, généralités sur le réseau et les outils Unix d’exploration
- 02 – API Java TCP, les classes et méthodes Java utiles pour communiquer à travers des flux TCP sur le réseau
- 03 – La concurrence en Java, l’exécution concurrente en Java, processus et threads, problèmes et solutions
- 04 – API Java UDP, les classes et méthodes Java utiles pour communiquer en mode paquet sur le réseau.
- 05 – Sérialisation, les techniques de sérialisation en Java, sérialisation interne et sérialisation externe, XML, etc.
- 06 – API C TCP, l’interface de programmation réseau en C (adresses Internet, adresses de sockets, résolution de nom, socket, TCP)
- 07 – API C UDP, les socket de type
SOCK_DGRAM
- 08 – Diffusion, la diffusion intégrale (broadcast) et la multidiffusion (multicast)
- 09 – E/S non-bloquantes en Java aka
java.nio.channels
- 10 – E/S non-bloquantes en C aka
select
,poll
- 11 – Codage en direct d’un serveur HTTP élémentaire
- 12 – RMI, Activation et Sécurité
- 13 – RPC/XDR
Quelques supports annexes qui ont pu être projetés à l’occasion et pas toujours complets :
- la communication sécurisée SSL en Java
- les communications distribuées Pair à pair
- la normalisation du nommage URL Java
- les protocoles applicatifs, quelques protocoles très courants de la couche application (SMTP, HTTP)
- la communication hors bande (OOB)
Des codes sources conçus en cours
2014
- Une communiation élémentaire en TCP : Client TCP et Serveur TCP Multithreadé
- Un prototype très primitif de système de fichiers distribués Client SFD, Serveur SFD.
2013
- Cours n°2
- Un exemple de base illustrant les Threads,
- Un Client/Serveur TCP.
- Cours n°3
- Deux exemples d’émission et réception de messages en UDP; l’émetteur en rafale associé au récepteur long/lent permet d’observer la perte de message UDP par débordement de la couche UDP du récepteur.
- Cours n°4
- Un exemple de transport d’objet sur une liaison TCP.
- Cours n°5
- Tout d’abord quelques conversions de chaînes et d’adresses
- Utilisation de gethostbyname() pour obtenir une résolution de nom
- Utilisation de getaddrinfo() pour des résolutions plus fines
- Un serveur TCP en langage C…
- Cours n°6
- Un client UDP en C et le serveur correspondant
- Un service ECHO en C: la partie cliente et la partie serveur
- Du broadcast en Java : envoyeur et récepteur et en C envoyeur et récepteur
- Du multicast en Java : envoyeur et récepteur et en C envoyeur et récepteur
Travaux Pratiques
2007 (archives mal classées/indexées)
- TP n°1, TP n°2, TP n°3, TP n°4, TP n°5, TP n°6, TP n°7, TP n°8, TP n°9, TP n°10
- du code (de l’époque) Controle.java, Allumettes.java, Synch.java, SmtpClient.java, Security.java, Portes.java, SNTP (Simple Network Time Protocol), TP n°10 (SSL), unknown, TP n°2, UDP.
2016
Projets
Examens
- Mai 2012 et la correction ServeurTransfertFichier.java, ClientTransfertFichier.java, Transfert.java
- Juin 2012
- Mai 2013
- Juin 2013
- Mai 2014