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ésshutdown()

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)


آخر تعديل: الأحد، 18 فبراير 2024، 11:16 PM