Exercice 0 : une application simple basée sur UDP
Le but de cet exercice est de créer une application serveur-client simple basée
sur UDP. La fonctionnalité de l'application est minimale : le serveur reçoit
des données des clients et les renvoie aux clients (comme echo
).
Pour tester l'application, vous pouvez utiliser l'espace d'adressage
loopback local.
-
Problème 0 : Créez un en-tête
exmp1.header.h
qui inclut toutes les librairies que vous prévoyez d'utiliser pour votre application. Consultez les pagesman
pour compiler une liste des librairies que vous utiliserez - par exemple la pageman inet
. -
Problème 1 : Écrivez un programme C
exmp1_server.c
pour votre serveur, qui doit décrire grossièrement ce qui suit :- Déclaration et initialisation d'une variable
svaddr
contenant l'adresse IPv4 du serveur. - Lier une socket à une adresse qui sera utilisée pour recevoir des datagrammes - pour les besoins du test, l'adresse wildcard peut être utilisée (n'oubliez pas de la mettre dans l'ordre des octets du réseau).
- Le corps principal du code, qui est une boucle infinie des actions
suivantes:
- Réception d'un datagramme.
- Imprimer sur
stdout
le nombre d'octets qu'il contient et l'adresse de l'expéditeur (y compris le port). - Renvoyer les données.
- Déclaration et initialisation d'une variable
-
Problème 2 : Utilisez un utilitaire de votre choix (par exemple
netcat
) pour tester si le serveur fonctionne. -
Problème 3 : Ecrivez un programme C décrivant le client de cette application, qui doit prendre comme arguments l'adresse du serveur et les données à envoyer. Le programme effectue ensuite les opérations suivantes:
- Déclare et initialise une variable contenant l'adresse du serveur (le
port étant déclaré dans l'en-tête que vous avez créé précédemment).
N'oubliez pas de convertir l'adresse au format approprié (utilisez
inet_pton
) et de mettre le port dans l'ordre des octets du réseau. - Pour chaque morceau de données fourni comme argument, le client l'envoie au serveur et imprime la réponse du serveur.
- Déclare et initialise une variable contenant l'adresse du serveur (le
port étant déclaré dans l'en-tête que vous avez créé précédemment).
N'oubliez pas de convertir l'adresse au format approprié (utilisez
Devoir à rendre avant le 24/03/2023 à 23:59 GMT+1
- Problème 0 : Modifiez le programme précédent de façon à ce que l'application utilise maintenant une socket de flux basée sur TCP.
- Problème 1 : Étendez les fonctionnalités de cette nouvelle application afin qu'elle puisse gérer plusieurs connexions de clients à la fois.