Introduction
Une
association est un tuple spécifiant complètement une connexion : { protocole, adresse locale, port local, adresse distante, port distant }
Un socket est une demi-association spécifiant un côté de la connexion : { protocole, adresse locale, port local}
{ protocole, adresse distante, port distant}
Certains appels système nécessitent un pointeur vers une adresse de
sockets. Dans <sys/socket.h>,
on trouve la définition générique des structures contenant une adresse de
sockets : struct sockaddr {
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes of direct address */
};
Le contenu des 14 bytes doit être interprété suivant le type d'adresse.
Généralement, des structures d'adresses sont redéfinies pour chaque famille
d'adresses. Pour les protocoles internets, la structure des adresses est définie
de la façon suivante dans <netinet/in.h>
: struct sockaddr_in {
short sin_family; /* Address family (type) */
u_short sin_port; /* Port to connect to */
struct in_addr sin_addr; /* Host's adress */
char sin_zero[8]; /* padding, ignored */
};
Pour pouvoir utiliser le socket, nous devons d'abord le créer grâce à
l'appel système socket. La marche à suivre varie suivant le côté où
l'on se trouve (client ou serveur) ainsi que le protocole utilisé (UDP, TCP,
...).
|