LES SOCKETS EN C/C++ : socket () , close() et shutdown()
I. Création d’une socket: socket()
Tout processus souhaitant communiquer doit demander à son système local la création d'une socket. La création d’une socket s’effectue grâce à l’appel système de la fonction socket.
a. Syntaxe:
b. Valeurs retournées :
- Cette fonction renvoie un identificateur sur la socket crée. Cet entier est appelé descripteur ou bien n° de socket.
- Si la fonction renvoi -1 à erreur de création.
c. Paramètres d’entrée :
1. domain= family : le domaine d’une socket
Les familles les plus répandues sont: AF : @family PF : protocol_family
- AF_UNIX/ AF_LOCAL Protocoles internes de UNIX: S’il s’agit d’échange d’information entre des processus d’une même machineà Communication locale.
- AF_INET Protocoles Internet Ă les processus tournant sur des machines distantes.
Les constantes AF_UNIX,AF_LOCAL sont définies dans le fichier <sys/socket.h>
2. type: mode/type de communication
- SOCK_STREAM utilisée en mode connecté au dessus de TCP.
- SOCK_DGRAM utilisée en mode déconnecté avec des datagrammes au dessus d’UDP.
Les constantes SOCK_STREAM, SOCK_DGRAM sont définies dans le fichier <sys/socket.h>
3. Protocol : spécifie le protocole à utiliser.
Il peut avoir les valeurs IPPROTO_TCP , IPPROTO_UDP...........
Les constantes IPPROTO_xxx sont définies dans le fichier <netinet/in.h>.
Le protocol est mis à 0 car l’association domaine type définie le protocole.
II. Détruire une socket: close()
L’appel close() ferme le descripteur de fichiers
a. Syntaxe:

b. Valeurs retournées : retourne 0 en cas de succès, et -1 en cas d’erreur.
c. Paramètres d’entrée :
- s : descripteur de socket
3. Réduire les fonctionalités: shutdown()
Ferme de manière unidirectionnel ou bidirectionnel la communication.
a. Syntaxe:
b. Valeurs retournées: retourne 0 en cas de succès, et -1 en cas d’erreur.
c.Paramètres d’entrée :
a) s : descripteur de socket
b) how : peut prendre les valeurs suivantes :
- 0/SHUT_RD : la socket ne peut plus recevoir de donnéesà Ecriture seule.
- 1/SHUT_WR : la socket ne peut plus envoyer de données (socket passive, écoute seulement),à Lecteur seule
- 2 /RDWR fin de la communication (dans les deux sens)à Socket désactivée.
Exemple :
#include <sys/socket.h>
#include <sys/types.h>
int s= socket (AF_UNIX , SOCK_STREAM, 0) ;
shutdown(s,0)
close(s)