Exercice 0 - Familiarisation avec les sockets Unix

  • Problème 0 : Utilisez man pour rechercher des informations sur:
    • unix socket (man 7 unix)
    • sockaddr
    • socket(2)
    • bind()
    • listen()
    • accept()
    • connect()

Pour les appels systeme: que prennent-ils comme entrée ? Que renvoient-ils en sortie ? De quelles bibliothèques C font-elles partie et quels en-têtes faut-il inclure pour les utiliser ?

Exercice 1 - Familiarisation avec les sockets.

  • Problème 0 : Étudiez les fichiers example1Server.c, example1Client.c et examplesHeader.h:

    1. Compilez les fichiers sources et lancez les exécutables correspondants.
    2. Ajouter aux fichiers source des commentaires décrivant l'action de chaque appel système.
  • Problème 1 : Étudiez les fichiers example2Server.c, example2Client.c. Analysez-les comme indiqué ci-dessus.

Exercise 2

  • Problème 0 : Sur la base des deux exemples précédents, écrivez un programme C pour un scénario client-serveur dans lequel :
    1. Une connexion est établie entre le serveur et un client.
    2. Le client envoie un caractère latin minuscule au serveur via une socket.
    3. Le serveur imprime le caractère et répond au client (via la socket) avec la version majuscule du même caractère.
    4. Le client imprime le caractère qu'il a reçu et met fin à la connexion avant de quitter.
    5. Le serveur attend que le client suivant se connecte.

Décrivez en détail le schéma de communication inter-processus que vous avez mis en œuvre et défendez son exactitude.

Exercise 3

  • Problème 0: Étendez le programme précédent de manière à ce que le serveur puisse gérer des connexions avec plusieurs clients en même temps. Pour ce faire, vous devez utiliser un mécanisme de concurrence (processus enfants, threads).

Devoir - à soumettre avant le 17/03/2024, 23:59 GMT+1

En utilisant les sockets Unix, créez un programme qui implémente un schéma serveur-client pour la gestion des fichiers, dans lequel un client peut demander au serveur n'importe quel sous-ensemble des opérations suivantes :

  1. La création d'un fichier, auquel cas il fournit également un nom de fichier.
  2. Lecture du contenu d'un fichier existant (à fournir via le socket).
  3. L'ajout (append) de données à un fichier déjà existant, auquel cas le client fournit également le nom du fichier et les données à écrire.

Le serveur doit pouvoir servir plusieurs clients en même temps.

Vous êtes libre de choisir la méthode que vous préférez pour mettre en œuvre la concurrence et les entrées/sorties de fichiers (parmi celles que nous avons vues).

Votre soumission doit inclure un exemple de client (en code, pas en exécutable) qui illustre les fonctionnalités que vous avez réussi à mettre en œuvre.


Site built with MkDocs and a slightly-modified version of Terminal for MkDocs.
Last update: September 2023