Serveurs multiples - Domaine Internet

© D. Mathieu    mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 01/10/1999 - Dernière mise à jour : 26/11/2001

Remarques préliminaires :

Sommaire

Serveur multi-protocoles mono-service mono-processus
exo_01cudp : ppal() du client daytime non connecté
exo_01ctcp : ppal() du client daytime connecté
exo_01s : ppal() du serveur daytime tcp et udp
Serveur multi-protocoles multi-services mono-processus
exo_02s : ppal() du serveur
exo_02ctcp : ppal() du client echo connecté
exo_02cudp : ppal() du client echo non connecté
Serveur parallèle multi-protocoles multi-services multi-processus
exo_03s : ppal() du serveur
Serveur multi-threads
exo_04s : ppal() du serveur


Serveur multi-protocoles mono-service mono-processus

exo_01

exo_01cudp : ppal() du client daytime non connecté

     Recopier le fichier dirsidgram/exo_09c.cxx dans le fichier exo_01cudp.cxx.

exo_01ctcp : ppal() du client daytime connecté

     Recopier le fichier dirsistream/exo_02c.cxx dans le fichier exo_01ctcp.cxx.

exo_01s : ppal() du serveur daytime tcp et udp

     Recopier le fichier dirsidgram/exo_09s.cxx dans le fichier exo_01s.cxx. Ajouter le fichier dirsistream/exo_02s.cxx dans le fichier exo_01s.cxx. Fusionner les deux programmes pour faire un serveur concurrent multi-protocoles (TCP/UDP) mono-processus mono-service (time) : il offre en permanence deux sockets, l'une de communication en mode non connecté (UDP) sur laquelle il peut recevoir des requêtes de clients, l'autre de connexion en mode connecté (TCP). S'il reçoit une requête sur cette dernière, il crée une socket de communication, rend le service, referme la socket de communication et retourne en attente d'une requête. Le numéro de port peut être fixé ou attribué arbitrairement par le système. Utiliser le même numéro de port pour les deux protocoles.

Remarque : pour faciliter la compréhension, il est recommandé d'isoler le service dans deux fonctions, DaytimeUDP() et DaytimeTCP() par exemple, et de ne laisser dans la fonction ppal() que l'architecture générale.

     Compiler et tester en lançant plusieurs clients, par exemple au moyen d'un script.

Corrigés : exo_01s.cxx      -      exo_01cudp.cxx      -      exo_01ctcp.cxx

Sommaire


Serveur multi-protocoles multi-services mono-processus

exo_02

exo_02s : ppal() du serveur

    Recopier le fichier exo_01s.cxx dans le fichier exo_02s.cxx, Ajouter les deux sockets nécessaires pour fournir un deuxième service (echo) dans les deux protocoles  TCP et UDP. Le serveur devra afficher les deux numéros de port, donnés par le système, en précisant à quel service ils correspondent. On se servira du code écrit dans le fichier dirsistream/exo_07s.cxx

exo_02ctcp : ppal() du client echo connecté

    Recopier le fichier dirsistream/exo_05c.cxx dans le fichier exo_02ctcp.cxx

exo_02cudp : ppal() du client echo non connecté

    Recopier et le fichier dirsidgram/exo_10c.cxx dans le fichier exo_02cudp.cxx.

    Compiler. Tester le serveur avec tous les clients actuels du répertoire dirserv, par exemple au moyen d'un script.

Corrigés : exo_02s.cxx      -      exo_02cudp.cxx      -      exo_02ctcp.cxx      -      ScriptDaytimeEcho

Sommaire


Serveur parallèle multi-protocoles multi-services multi-processus

exo_03

exo_03s : ppal() du serveur

    Recopier le fichier exo_02s.cxx dans le fichier exo_03s.cxx. Transformer les services concurrents  en services parallèles en créant des processus fils (au moins pour le service echo connecté).

Corrigés : exo_03s.cxx

Sommaire


Serveur multi-threads [1]

exo_04s : ppal() d'un serveur multi-thread

    Recopier le fichier exo_03s.cxx dans le fichier exo_04s.cxx. Transformer le(s) processus fils en thread(s).

    La librairie libthread doit être ajoutée à l'édition de liens.

    Compiler et tester.

Corrigés : exo_04s.cxx      -      Makefile

Sommaire


[1] A propos des threads, on pourra utiliser la commande xman, en recherchant dans la section (3) Subroutines, toutes les fonctions préfixées par pthread_.

Voir aussi la documentation jointe, Threads: Basic Theory and Libraries tirée du cours Programming in C.

               Serveurs               

Serveurs multiples - Domaine Internet

© D. Mathieu    mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 01/10/1999 - Dernière mise à jour : 26/11/2001

Remarques préliminaires :

Sommaire

Serveur multi-protocoles mono-service mono-processus
exo_01cudp : ppal() du client daytime non connecté
exo_01ctcp : ppal() du client daytime connecté
exo_01s : ppal() du serveur daytime tcp et udp
Serveur multi-protocoles multi-services mono-processus
exo_02s : ppal() du serveur
exo_02ctcp : ppal() du client echo connecté
exo_02cudp : ppal() du client echo non connecté
Serveur parallèle multi-protocoles multi-services multi-processus
exo_03s : ppal() du serveur
Serveur multi-threads
exo_04s : ppal() du serveur


Serveur multi-protocoles mono-service mono-processus

exo_01

exo_01cudp : ppal() du client daytime non connecté

     Recopier le fichier dirsidgram/exo_09c.cxx dans le fichier exo_01cudp.cxx.

exo_01ctcp : ppal() du client daytime connecté

     Recopier le fichier dirsistream/exo_02c.cxx dans le fichier exo_01ctcp.cxx.

exo_01s : ppal() du serveur daytime tcp et udp

     Recopier le fichier dirsidgram/exo_09s.cxx dans le fichier exo_01s.cxx. Ajouter le fichier dirsistream/exo_02s.cxx dans le fichier exo_01s.cxx. Fusionner les deux programmes pour faire un serveur concurrent multi-protocoles (TCP/UDP) mono-processus mono-service (time) : il offre en permanence deux sockets, l'une de communication en mode non connecté (UDP) sur laquelle il peut recevoir des requêtes de clients, l'autre de connexion en mode connecté (TCP). S'il reçoit une requête sur cette dernière, il crée une socket de communication, rend le service, referme la socket de communication et retourne en attente d'une requête. Le numéro de port peut être fixé ou attribué arbitrairement par le système. Utiliser le même numéro de port pour les deux protocoles.

Remarque : pour faciliter la compréhension, il est recommandé d'isoler le service dans deux fonctions, DaytimeUDP() et DaytimeTCP() par exemple, et de ne laisser dans la fonction ppal() que l'architecture générale.

     Compiler et tester en lançant plusieurs clients, par exemple au moyen d'un script.

Corrigés : exo_01s.cxx      -      exo_01cudp.cxx      -      exo_01ctcp.cxx

Sommaire


Serveur multi-protocoles multi-services mono-processus

exo_02

exo_02s : ppal() du serveur

    Recopier le fichier exo_01s.cxx dans le fichier exo_02s.cxx, Ajouter les deux sockets nécessaires pour fournir un deuxième service (echo) dans les deux protocoles  TCP et UDP. Le serveur devra afficher les deux numéros de port, donnés par le système, en précisant à quel service ils correspondent. On se servira du code écrit dans le fichier dirsistream/exo_07s.cxx

exo_02ctcp : ppal() du client echo connecté

    Recopier le fichier dirsistream/exo_05c.cxx dans le fichier exo_02ctcp.cxx

exo_02cudp : ppal() du client echo non connecté

    Recopier et le fichier dirsidgram/exo_10c.cxx dans le fichier exo_02cudp.cxx.

    Compiler. Tester le serveur avec tous les clients actuels du répertoire dirserv, par exemple au moyen d'un script.

Corrigés : exo_02s.cxx      -      exo_02cudp.cxx      -      exo_02ctcp.cxx      -      ScriptDaytimeEcho

Sommaire


Serveur parallèle multi-protocoles multi-services multi-processus

exo_03

exo_03s : ppal() du serveur

    Recopier le fichier exo_02s.cxx dans le fichier exo_03s.cxx. Transformer les services concurrents  en services parallèles en créant des processus fils (au moins pour le service echo connecté).

Corrigés : exo_03s.cxx

Sommaire


Serveur multi-threads [1]

exo_04s : ppal() d'un serveur multi-thread

    Recopier le fichier exo_03s.cxx dans le fichier exo_04s.cxx. Transformer le(s) processus fils en thread(s).

    La librairie libthread doit être ajoutée à l'édition de liens.

    Compiler et tester.

Corrigés : exo_04s.cxx      -      Makefile

Sommaire


[1] A propos des threads, on pourra utiliser la commande xman, en recherchant dans la section (3) Subroutines, toutes les fonctions préfixées par pthread_.

Voir aussi la documentation jointe, Threads: Basic Theory and Libraries tirée du cours Programming in C.