Objectif

L'objectif de ce TP est d'écrire un client et un serveur simples fonctionnant en mode non connecté (UDP). Les exercices proposés sont détaillés après un résumé des fonctions à utiliser.


Résumé des fonctions

Fonctions système

Les fonctions utiles sont données ci-dessous.

Socket

Comme toutes les sockets, une socket UDP est créée par la fonction socket(2) qu'on utilisera de la manière suivante :

udp_socket = socket(AF_INET, SOCK_DGRAM, 0);

Voir la page du manuel udp(7) pour plus de détails.

Le client

Hormis la création de la socket, il n'y a rien à faire pour le client, si ce n'est d'initialiser un objet de type struct sockaddr_in avec l'adresse et le numéro de port du serveur pour pouvoir l'utiliser ensuite lors de l'envoi de messages.

Se référer au TP4 pour l'initialisation d'un objet de type struct sockaddr_in.

Le serveur

Comme en TCP (cf. TP4), la socket doit être liée à l'adresse et au numéro de port souhaité avec la fonction bind(2). Le serveur peut ensuite se mettre immédiatement en attente de messages.

Envoi et réception de messages

Envoi

Pour envoyer un message UDP, on utilisera la fonction :

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);

où :