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