Sockets UDP asynchrones

Le but de ce TP est de modifier le comportement en réception des sockets UDP en rendant la réception des paquets asynchrone : un paquet reçu poura être récupéré ultérieurement et le service de réception n'est pas bloquant.

Le problème est que par défaut, la méthode receive d'une socket UDP est bloquante (sauf si un paquet avait été envoyé mais pas encore lu), elle retourne seulement quand un paquet est reçu. Il faut donc implémenter des mécanismes qui permettent de savoir si un paquet a été reçu mais sans rester bloqué si aucun paquet n'est disponible.

Classe AsynchronousDatagramSocket

La version asynchrone des sockets UDP sera implémentée par la classe nommée AsynchronousDatagramSocket que vous développerez. Cette classe n'est pas une spécialisation de la classe DatagramSocket (même s'il aurait été possible de spécialiser également cette classe).

Constructeurs

Les deux constructeurs de cette classe à définir sont les suivant et se basent sur ceux de la classe DatagramSocket :

Méthodes

Par rapport à la classe DatagramSocket, le nombre de méthodes est fortement réduit. Nous allons uniquement définir des services basiques d'émission/réception. Les services à implémenter sont au nombre de 5 :

Par souci de simplicité, les exceptions ne sont pas gérées. Une version plus évoluée pourrait par contre prendre en compte les problèmes d'émission/réception sur les sockets.


Eric Cariou, dernière modification : 23/01/24