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, ...).