Test de programmation réseau dans les conditions d'un TP (22 décembre 2000 – durée : 2h)

©     M. Laporte - D. Mathieu laporte@romarin.univ-aix.fr - C. Pain-Barre
I.U.T.d'Aix en Provence - Département Informatique
Créé le 20/12/2000 - Dernière mise à jour : 20/01/2001

Tout document autorisé

Remarques préliminaires


Sommaire

Réception de message urgent par le signal SIGURG
Réception de message urgent par la fonction select()


Réception de message urgent par le signal SIGURG

Emission :

    Une donnée urgente est en principe constituée d'un seul octet émis au moyen de la fonction send(), en utilisant le flag MSG_OOB (définie dans le fichiers <sys/socket.h>).

Réception :

    Une donnée urgente est lue au moyen de la fonction recv(), en utilisant aussi le flag MSG_OOB. Sous réserve qu'il soit déclaré propriétaire de la socket (voir plus loin), le processus consommateur est informé de l'arrivée d'un message urgent par la réception du signal SIGURG.

Serveur :
    Ecrire un serveur (exo_01s.cxx) qui :

Client :

    Ecrire un client (exo_01c.cxx) qui :

Corrigés : exo_01s.cxx      -      exo_01c.cxx

Sommaire



 

Réception de message urgent par la fonction select()

    Le système a un autre moyen de prévenir un processus de l'arrivée d'un message urgent grâce à la fonction select().

    Ecrire un client (exo_02c.cxx) qui :

Corrigés : exo_02c.cxx

Sommaire


Persistance de connexion [1]

    Il est possible de perdre temporairement une connexion entre les deux processus communiquant sur des machines distinctes, sans que l'application s'en aperçoive. C'est en effet à TCP de résoudre le problème qui peut rester complètement transparent pour l'utiliusateur. Il est cependant possible à une application de tester périodiquement la persistance de la connexion par un échange régulier de messages urgents :     Dans chacun des deux processus (client et serveur), et sans altérer leur fonctionnement normal, un événement périodique peut être obtenu de la façon suivante : Serveur :

    Recopier le fichier exo_01s.cxx dans exo_03s.cxx. Dans l'espace de noms anonyme, ajouter les traitants de signaux en provenance de l'alarme et des messages urgents.

    Dans la fonction ppal() :

Client :

    Recopier le fichier exo_01c.cxx dans exo_03c.cxx. Dans l'espace de noms anonyme, ajouter les traintants des signaux en provenance de l'alarme et des messages urgents (attention, ils sont légèrement différents des traitants de signaux du serveur : voir plus haut).

    Dans la fonction ppal() :

.Corrigés : exo_03s.cxx     -     exo_03c.cxx

Sommaire


[1] Très fortement inspiré de : W.R. Stevens, "Unix Network programming", Prentice hall, 1998