Vous êtes sur la page 1sur 7

Programmation des sockets en mode

non connecté

Annexe2 Socket UDP SysRep et C/S M2 RSD


Mme Bellounar 1
Programmation des sockets en mode
non connecté UDP
 Le client n'a pas besoin d'établir une connexion avec le
serveur. Il envoie juste un datagramme (donnée) au
serveur en utilisant la fonction sendto() (au lieu de
send () en TCP), ce qui nécessite l'adresse de la
destination (le serveur) en tant que paramètre.

 De même, le serveur n'accepte pas une connexion d'un


client. Au lieu de cela, le serveur appelle la fonction
recvfrom() (au lieu de recv() en TCP) qui attend
que les données arrivent des clients.

Annexe2 Socket UDP SysRep et C/S M2 RSD


Mme Bellounar 2
Programmation des sockets en mode
non connecté
 La fonction sendto()
 Cette fonctions est similaire à la fonction send() , mais avec en plus deux
arguments supplémentaires .

#include <sys/socket.h>
int sendto(int sockfd , char * buffer, int buffer_len, int flags,
struct sockaddr *dest_addr , socklen_t addrlen);

 Description des arguments:


sockfd : est le descripteur du socket précédemment créé par la fonction
socket().
buffer: est un tampon qui contient les octets à envoyer.
buffer_len: indique le nombre d'octets à envoyer. C’est la longueur des
données en octets
flags: correspond au type d'envoi à faire
dest_addr : représente l’adresse du destinataire
addrlen: représente la longueur de l’adresse destination
Annexe2 Socket UDP SysRep et C/S M2 RSD
Mme Bellounar 3
Programmation des sockets en mode
non connecté
REMARQUE :
Les quatre premiers arguments de la fonction
sendto() sont identiques aux quatre premiers
arguments de send().

Les deux derniers arguments de la fonction


sendto() sont similaires aux deux derniers
arguments de la fonction connect().il s’agit de
 Un pointeur vers l’adresse du destinataire
 La longueur de l’adresse

Annexe2 Socket UDP SysRep et C/S M2 RSD


Mme Bellounar 4
Programmation des sockets en mode
non connecté
 La fonction recvfrom()
 Cette fonction est similaire à la fonction recv(), mais deux nouveaux
arguments supplémentaires sont nécessaires.

#include <sys/socket.h>
int recvfrom (int sockfd , char * buffer , int buffer_len, int flags, sockaddr
*exp_addr , socklen_t *addrlen);

 Description des arguments:


sockfd: représente la socket précédemment créée, càd socket qui recevra les
informations .
buffer: est un tampon qui stockera les données en provenance de
l’appelant . On utilisera un pointeur sur la structure de donnée qui
contiendra les informations à recevoir.
buffer_len : indique le nombre d'octets à lire depuis le tampon buffer. En
général c’est la longueur maximale du tampon..
flags: correspond au type de lecture de données à faire
exp_addr : représente l’adresse de l’expéditeur
addrlen: représente la longueur de l’adresse expéditeur
Annexe2 Socket UDP SysRep et C/S M2 RSD
Mme Bellounar 5
Programmation des sockets en mode
non connecté
REMARQUE :

 Les quatre premiers arguments de la fonction recvfrom()


sont identiques aux quatre premiers arguments de recv()

 Les deux derniers arguments de la fonction recvfrom() sont


similaires aux deux derniers arguments de la fonction
accept(). Le contenu de la structure d'adresse de socket
pointé par le pointeur expediteur nous dit qui a envoyé le
datagramme.
 Les deux fonctions renvoient la longueur des données qui
ont été lues ou écrites.
Annexe2 Socket UDP SysRep et C/S M2 RSD
Mme Bellounar 6
TP

 Exo - Reprendre l’ exercice « serveur/client time »


Modifier le programme du serveur TCP pour qu’il
devienne
1- Un serveur UDP
2- Un serveur UDP sequentiel.
3- Un serveur UDP concurrent multiprocessus (un
processus / requête) en utilisant FORK().
Annexe2 Socket UDP SysRep et C/S M2 RSD
Mme Bellounar 7

Vous aimerez peut-être aussi