socket - créer une extrémité de communication

SYNOPSIS #include <sys/types.h> #include <sys/socket.h>

 int socket(int domain, int type, int protocol);

DESCRIPTION La fonction socket() crée un point de terminaison pour la communication et retourne un descripteur de fichier qui peut être utilisé dans les appels système de lecture/écriture (read/write), send/recv, et autres.

 Les arguments domain, type et protocol sont utilisés pour spécifier la famille de protocoles de communication, le type de socket et le protocole de communication, respectivement.

 Domain :
 Les domaines de protocoles de communication supportés incluent :
 AF_INET pour les protocoles IPv4,
 AF_INET6 pour les protocoles IPv6,
 AF_UNIX pour les connexions de domaine Unix.

 Type :
 Les types de socket supportés incluent :
 SOCK_STREAM pour les sockets de flux,
 SOCK_DGRAM pour les sockets de datagramme.

 Protocol :
 Le protocole de communication à utiliser peut être spécifié explicitement ou laissé à 0 pour que le système choisisse le protocole approprié.

 Si la fonction réussit, elle retourne un descripteur de fichier (un entier) qui peut être utilisé pour les appels système de lecture/écriture (read/write), send/recv, et autres. Si la fonction échoue, elle retourne -1 et met errno à la valeur appropriée.

VALEUR DE RETOUR La fonction socket() retourne un descripteur de fichier si elle réussit, sinon elle retourne -1 et met errno à la valeur appropriée.

ERREURS La fonction socket() peut échouer et mettre errno à l'une des valeurs suivantes : EAFNOSUPPORT : Le domaine de protocoles spécifié n'est pas supporté. EINVAL : Type de socket non valide ou protocole non valide. EMFILE : Trop de fichiers ouverts par ce processus. ENFILE : Trop de fichiers ouverts dans le système. ENOBUFS, ENOMEM : Pas assez de mémoire. EPROTONOSUPPORT : Le protocole spécifié n'est pas supporté dans ce domaine. ESOCKTNOSUPPORT : Le type de socket spécifié n'est pas supporté dans ce domaine.

VOIR AUSSI accept(2), bind(2), connect(2), listen(2), socketpair(2), ip(4), unix(4)

  1. SOCK_STREAM : Ce type de socket est utilisé pour les connexions orientées connexion (connection-oriented) qui garantissent la transmission des données dans l'ordre et sans perte de données. Il est utilisé pour les protocoles tels que TCP (Transmission Control Protocol) qui fournissent une communication fiable et orientée connexion.
  2. SOCK_DGRAM : Ce type de socket est utilisé pour les connexions non orientées connexion (connectionless) qui n'ont pas de garantie de transmission des données dans l'ordre ou sans perte de données. Il est utilisé pour les protocoles tels que UDP (User Datagram Protocol) qui fournissent une communication non fiable et non orientée connexion.

Les sockets de type SOCK_STREAM sont souvent utilisés pour les applications qui nécessitent une transmission fiable de données, telles que les services de messagerie, les transferts de fichiers et les connexions à des serveurs Web. Les sockets de type SOCK_DGRAM, en revanche, sont souvent utilisés pour les applications qui nécessitent une transmission de données rapide et efficace, telles que les jeux en ligne et les applications de streaming.

Il est important de noter que les sockets de type SOCK_STREAM sont souvent plus lents que les sockets de type SOCK_DGRAM en raison de la surcharge supplémentaire nécessaire pour garantir la fiabilité de la communication.