Network programming
Introduction
Goals of the course
Design and implement software that exchange data via the network
on top of the protocols IP, UDP or TCP
using architectures adapted to the needs (concurrent servers, non-blocking IO)
taking into account the fundamental mechanisms of communication protocols : data representation, frames, streams, acknowledgments, ...
Main concepts covered
data representations, handling data through
java.nio.Buffer
communication in UDP, reliability of exchanges, clients vs server, a first taste of non-blocking IO
TCP clients, handling a stream of data,
protocols on top of TCP, the case of HTTP
concurrent TCP servers and their limits, TCP servers using non-blocking IO.
Teaching philosophy
All sessions mix both lecture and exercises with
some notions in a few slides
exercises to immediately apply these notions
a guided personal reflexion and experimentation
a group consolidation : problems raised, possible solutions, dogmas to obey...
Organization
You need to be active during the session ...
the interactions during the session are rich
you must be on time!
... but it is not enough!
you must finish the exercises and post them to elearning
you must review the previous lectures
project quite large and difficult
Evaluation
30% TPnoteUDP + 30% TPnoteTCP + 40% PROJECT
TPnote[UDP|TCP]: exam in front of a machine
PROJECT three grades:
- write an RFC for a protocol
- presentation beta of your project at mid-course,
- final delivery packaged and documented
What you need to do
be active during all sessions
review the slides and finish the exercises
always post your work on elearning
start the project as soon as possible