IV/ SOCKET DU DOMAINE UNIX

 

        Les sockets du domaine Unix sont de la famille AF_UNIX. Elles sont un moyen de communication inter-processus qui s’exécutent sur la même machine. C'est une alternative aux tubes, mémoire partagée etc…

+ Aucun partage de données communes.
+ Avantage par rapports aux tubes, communication bi-directionnelles.


- Un échange d’information impliquent une double recopie des données à transmettre:
        * pour l’envoi, de l’espace d’adressage de l’émetteur vers le noyau
        * pour la réception, du noyau vers l’espace d’adressage du récepteur.
- Plus lent que les tubes

 

 

PRINCIPE DE FONCTIONNEMENT 

        Tout comme le domaine Internet, vous avez la possibilité d'avoir le mode connecté ou déconnecté. C'est la même chose que dans le domaine Internet, sauf qu'il n'y a pas toutes les contraintes et les défauts du support physique. Tout reste en local et donc les deux modes sont fiables car le noyau est sûr.

        La différence de fonctionnement se fait au niveau du point d'attache de la socket pour être visible par les autres processus. Nous avons vu que pour le domaine Internet un processus était adressable de l'extérieur grâce au nom de la machine sur laquelle il tourne et grâce au numéro du port sur lequel sa socket était attachée. Dans le domaine Unix, le point d'attache de la socket est un fichier, visible dans le système de fichier Unix, exactement comme les tubes. Celui-ci sert de lieu d'échange, le processus émetteur écrit dans le fichier, le récepteur lit dedans. 

 

1/ Mode déconnecté

        Chaque processus possède son propre fichier d'attache. Avant d'attacher la socket sur le fichier, je vous conseille de faire un unlink sur celui-ci, afin d'être sûr qu'il n'existe pas déjà. Pour envoyer un message, l'émetteur n'a qu'à spécifier le nom du fichier de la socket du processus destinataire. Le système se charge d'insérer dans le message le nom du fichier de l'émetteur pour que le récepteur puisse lui répondre.

 

2/ Mode connecté

        Ce mode fonctionne pareil qu'avec les tubes, c'est à dire que le programme serveur créé un fichier attaché à sa socket, puis le client créé lui aussi une socket qu'il va attacher au même fichier.

Suite...