Provided by: manpages-fr_3.65d1p1-1_all bug

NOM

       socket - Interface Linux aux sockets

SYNOPSIS

       #include <sys/socket.h>

       sockfd = socket(int famille_socket, int type_socket, int protocole);

DESCRIPTION

       Cette  page de manuel documente l'interface utilisateur de l'implémentation Linux des sockets réseau. Les
       sockets compatibles BSD représentent l'interface uniforme entre le processus utilisateur et les piles  de
       protocoles réseau dans le noyau. Les modules des protocoles sont regroupés en familles de protocoles tels
       que  AF_INET,  AF_IPX  et  AF_PACKET,  et  en types de sockets comme SOCK_STREAM ou SOCK_DGRAM. Consultez
       socket(2) pour plus d'informations sur les familles et les types de sockets.

   Fonctions du niveau socket
       Ces fonctions servent au processus utilisateur pour  envoyer  ou  recevoir  des  paquets  et  pour  faire
       d'autres opérations sur les sockets. Pour plus de détails, consultez leurs pages de manuel respectives.

       socket(2)  crée  une socket, connect(2) connecte une socket à une adresse de socket distante, la fonction
       bind(2) attache une socket à une  adresse  locale,  listen(2)  indique  à  la  socket  que  de  nouvelles
       connexions  doivent  être  acceptées, et accept(2) fournit une nouvelle socket avec la nouvelle connexion
       entrante. socketpair(2) renvoie deux sockets anonymes  connectées  (seulement  implémenté  pour  quelques
       familles locales comme AF_UNIX).

       send(2),  sendto(2),  et  sendmsg(2)  envoient  des  données  sur  une socket, et recv(2), recvfrom(2) et
       recvmsg(2) reçoivent les données envoyées par une socket. poll(2) et select(2) attendent que des  données
       arrivent  ou  que  l'émission  soit  possible.  De  plus,  les  opérations d'entrée-sortie standard comme
       write(2), writev(2), sendfile(2),  read(2)  et  readv(2)  peuvent  être  utilisées  pour  la  lecture  et
       l'écriture des données.

       getsockname(2)  renvoie  l'adresse  de  la socket locale et getpeername(2) renvoie l'adresse de la socket
       distante. getsockopt(2) et setsockopt(2) servent à définir et obtenir les options de la couche socket  ou
       protocole. ioctl(2) peut être utilisé pour lire et écrire d'autres options.

       close(2) sert à fermer une socket. shutdown(2) ferme une partie des connexions d'une socket multiple.

       La  recherche  ou  l'utilisation de pread(2) et pwrite(2) avec un décalage non nul n'est pas possible sur
       les sockets.

       Des opérations d'entrée-sortie non bloquantes sur les sockets sont possibles  en  définissant  l'attribut
       O_NONBLOCK  du  descripteur  de  la socket avec fcntl(2). Toutes les opérations qui devraient normalement
       bloquer se terminent alors  avec  l'erreur  EAGAIN  (l'opération  devra  être  retentée  ultérieurement).
       connect(2)  renverra  l'erreur  EINPROGRESS.  L'utilisateur  peut  alors  attendre divers événements avec
       poll(2) ou select(2).
       ┌────────────────────────────────────────────────────────────────┐
       │                         Événements E/S                         │
       ├──────────────┬─────────┬───────────────────────────────────────┤
       │ Événement    │ Appel   │ Circonstance                          │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lecture      │ POLLIN  │ Arrivée de nouvelles données          │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lecture      │ POLLIN  │ Configuration d'une connexion achevée │
       │              │         │ (pour    les    sockets     orientées │
       │              │         │ connexion)                            │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lecture      │ POLLHUP │ Demande  de  déconnexion  initiée par │
       │              │         │ l'autre extrémité                     │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lecture      │ POLLHUP │ Connexion rompue (seulement pour  les │
       │              │         │ protocoles  orientés  connexion) Lors │
       │              │         │ de  l'écriture  sur  la  socket,   le │
       │              │         │ signal SIGPIPE est aussi émis.        │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Écriture     │ POLLOUT │ La  socket  a  assez de place dans le │
       │              │         │ tampon  d'émission  pour  écrire   de │
       │              │         │ nouvelles données.                    │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lect./Écrit. │ POLLIN| │ Un  appel  sortant  à  connect(2) est │
       │              │ POLLOUT │ terminé.                              │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lect./Écrit. │ POLLERR │ Une erreur asynchrone s'est produite. │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Lect./Écrit. │ POLLHUP │ Le correspondant a clos  un  sens  de │
       │              │         │ communication.                        │
       ├──────────────┼─────────┼───────────────────────────────────────┤
       │ Exception    │ POLLPRI │ Arrivée  de  données urgentes. SIGURG │
       │              │         │ est alors envoyé.                     │
       └──────────────┴─────────┴───────────────────────────────────────┘

       Une alternative à poll(2) et select(2) est de laisser le noyau informer l'application des événements  par
       l'intermédiaire  d'un  signal SIGIO. Pour cela, l'attribut O_ASYNC doit être défini sur un descripteur de
       fichier de la socket via fcntl(2) et un gestionnaire de signal valable pour SIGIO doit être installé avec
       sigaction(2). Consultez les remarques sur les Signaux ci-dessous.

   Structures d'adresse de socket
       Chaque domaine de socket a son propre format pour les adresses de socket, avec  une  structure  d'adresse
       propre.  Chacune  de  ces  structures  commence  avec  un  champ  entier  « family »  (famille),  de type
       sa_family_t, qui indique le type de structure d'adresse. Cela permet aux appels système génériques à tous
       les domaines de sockets (par exemple connect(2), bind(2), accept(2), getsockname(2),  getpeername(2))  de
       déterminer le domaine d'une adresse de socket donnée.

       Le  type  struct  sockaddr  est défini afin de pouvoir passer n'importe quel type d'adresse de socket aux
       interface dans l'API des sockets. Le but de ce type est  purement  d'autoriser  la  conversion  de  types
       d'adresse  de socket propres à un domaine vers le type « générique », afin d'éviter les avertissements du
       compilateur au sujet de la non correspondance dans les appels de l'API des sockets.

       De plus, l'API des sockets fournit le type de données struct sockaddr_storage.  Ce  type  est  fait  pour
       contenir  toute  structure  d'adresse de socket spécifique à un domaine. Il est suffisamment grand et est
       aligné correctement (en particulier, il est assez grand pour contenir des adresses de socket IPv6). Cette
       structure contient le champ suivant, qui peut être utilisé  pour  identifier  le  type  d'adresse  socket
       effectivement stockée dans la structure :

               sa_family_t ss_family;

       La structure sockaddr_storage est utile dans les programmes qui doivent prendre en charge les adresses de
       socket  de  manière  générique  (par  exemple  les programmes qui doivent gérer à la fois des adresses de
       socket IPv4 et IPv6).

   Options de sockets
       Les options présentées  ci-dessous  peuvent  être  définies  en  utilisant  setsockopt(2)  et  lues  avec
       getsockopt(2)  avec  le  niveau  de  socket  positionné à SOL_SOCKET, et ce pour toutes les sockets. Sauf
       mention contraire, optval est un pointeur vers un int.

       SO_ACCEPTCONN
              Renvoie une valeur indiquant si la socket a été déclarée comme acceptant les connexions  à  l'aide
              de  listen(2). La valeur 0 indique que la socket n'est pas en attente de connexions et la valeur 1
              indique que la socket accepte les connexions. Cette option de socket peut être seulement  lue,  et
              pas modifiée.

       SO_BINDTODEVICE
              Attache  cette  socket  à  un  périphérique  donné,  tel  que  « eth0 », comme indiqué dans le nom
              d'interface transmis. Si le nom est une chaîne vide ou si la longueur de l'option  est  nulle,  la
              socket  est  détachée  du  périphérique.  L'option  transmise  est une chaîne de longueur variable
              terminée par un caractère nul, contenant  le  nom  de  l'interface,  la  longueur  maximale  étant
              IFNAMSIZ.  Si  une socket est attachée à une interface, seuls les paquets reçus de cette interface
              particulière sont traités par la socket. Cela ne fonctionne que pour certains types de sockets, en
              particulier les sockets AF_INET. Ce n'est pas géré pour les sockets  paquet  (utilisez  pour  cela
              bind(2)).

              Avant  Linux 3.8,  cette  option  de  socket  pouvait  être  configurée, sans pouvoir être lue par
              getsockopt(2). Depuis Linux 3.8, elle est lisible. Le paramètre optlen doit contenir la taille  du
              tampon destiné à recevoir le nom du périphérique, préférablement IFNAMSZ. La véritable longueur du
              nom du périphérique est renvoyée dans le paramètre optlen.

       SO_BROADCAST
              Définir  ou  lire  l'attribut  de  diffusion.  Une  fois  activé,  les sockets de datagrammes sont
              autorisées à envoyer des paquets à une adresse de diffusion. Cette option n'a aucun effet sur  les
              sockets orientées flux.

       SO_BSDCOMPAT
              Active  la  compatibilité  BSD  bogue-à-bogue.  Cela est utilisé par le module du protocole UDP de
              Linux 2.0 et 2.2. Si cette compatibilité est activée, les erreurs ICMP reçues pour une socket  UDP
              ne seront pas transmises au programme utilisateur. Dans les versions récentes du noyau, la gestion
              de cette option a été abandonnée progressivement : Linux 2.4 l'ignore silencieusement et Linux 2.6
              génère  une  alerte  noyau  (printk())  si  le  programme utilise cette option. Linux 2.0 activait
              également les options de compatibilité BSD bogue-à-bogue (modification aléatoire des en-têtes, non
              prise en compte de l'attribut de diffusion) pour les sockets brutes ayant cette option, mais  cela
              a été éliminé dans Linux 2.2.

       SO_DEBUG
              Active  le  débogage  de  socket.  Cela  n'est  autorisé  que  pour les processus avec la capacité
              CAP_NET_ADMIN ou un identifiant d'utilisateur effectif égal à 0.

       SO_DOMAIN (depuis Linux 2.6.32)
              Récupère le domaine de socket en tant qu'entier, en  renvoyant  une  valeur  telle  que  AF_INET6.
              Consultez  socket(2)  pour plus de détails. Cette option de socket peut être seulement lue, et pas
              modifiée.

       SO_ERROR
              Lit et efface l'erreur en cours sur la socket. Cette option de socket peut être seulement lue,  et
              pas modifiée. Demande un entier.

       SO_DONTROUTE
              Ne pas émettre par l'intermédiaire d'une passerelle, n'envoyer qu'aux hôtes directement connectés.
              Le  même  effet peut être obtenu avec l'attribut MSG_DONTROUTE durant une opération send(2) sur la
              socket. Demande un attribut entier booléen.

       SO_KEEPALIVE
              Active l'émission de messages périodiques gardant la socket ouverte  pour  les  sockets  orientées
              connexion. Demande un attribut entier booléen.

       SO_LINGER
              Définit ou lit l'option SO_LINGER. Le paramètre est une structure linger.

                  struct linger {
                      int l_onoff;    /* définition de l'activité */
                      int l_linger;   /* durée d'attente en secondes */
                  };

              Lorsque  ce  paramètre est actif, un appel à close(2) ou shutdown(2) ne se terminera pas avant que
              tous les messages en attente pour la socket aient été correctement émis ou que le délai  d'attente
              soit   écoulé.  Sinon,  l'appel  se  termine  immédiatement  et  la  fermeture  est  effectuée  en
              arrière-plan. Lorsque la socket est  fermée  au  cours  d'un  exit(2),  elle  attend  toujours  en
              arrière-plan.

       SO_MARK (depuis Linux 2.6.25)
              Positionner  la  marque pour chaque paquet envoyé au travers de cette socket (similaire à la cible
              MARK de netfilter, mais pour les sockets). Le changement de  marque  peut  être  utilisé  pour  un
              routage par marques sans netfilter ou pour le filtrage de paquets. Utiliser cette option nécessite
              la capacité CAP_NET_ADMIN.

       SO_OOBINLINE
              Si  cette  option  est  activée,  les données hors bande sont placées directement dans le flux des
              données reçues. Sinon, elles ne sont transmises que si l'attribut MSG_OOB  est  défini  durant  la
              réception.

       SO_PASSCRED
              Autorise  ou interdit la réception des messages de contrôle SCM_CREDENTIALS. Pour plus de détails,
              consultez unix(7).

       SO_PEEK_OFF (depuis Linux 3.4)
              Cette option, qui n'est à ce jour garantie que pour les sockets unix(7), définit la valeur  de  la
              « position  de  lecture »  (ou « peek offset ») pour l'appel système recv(2) lorsqu'il est invoqué
              avec l'attribut MSG_PEEK.

              Lorsque cette option reçoit une valeur négative (elle est initialisée à  -1  pour  toute  nouvelle
              socket),  elle  se  comporte  classiquement :  recv(2),  avec l'attribut MSG_PEEK, lit les données
              depuis le début de la file.

              Lorsque l'option reçoit une valeur supérieure ou égale à  zéro,  alors  la  lecture  suivante  des
              données  accumulées  dans la socket est réalisée à la position précisée par la valeur de l'option.
              Dans le même temps, la « position de lecture » est incrémentée du  nombre  d'octets  lus  dans  la
              file, de façon à ce que la prochaine lecture renvoie la donnée suivante dans la file.

              Si  des  données  sont retirées de la tête de la file par la fonction recv(2) (ou équivalent) sans
              l'attribut MSG_PEEK, alors la « position de lecture » est diminuée du nombre  d'octets  supprimés.
              Autrement  dit,  l'acquisition de données sans avoir recours à l'attribut MSG_PEEK a pour effet de
              modifier la « position de lecture », de sorte que la prochaine lecture  renvoie  les  données  qui
              auraient été renvoyées si aucune donnée n'avait été supprimée.

              Pour  les  sockets de datagrammes, si la « position de lecture » pointe à l'intérieur d'un paquet,
              alors les données renvoyées seront marquées de l'attribut MSG_TRUNC.

              L'exemple suivant illustre l'usage de SO_PEEK_OFF. Imaginons une  socket  de  flux  contenant  les
              données suivantes dans sa file :

                  aabbccddeeff

              La séquence suivante d'appels à recv(2) aura l'effet décrit dans les commentaires :

                  int ov = 4;                  // affecte 4 à la position de lecture
                  setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov));

                  recv(fd, buf, 2, MSG_PEEK);  // Lit "cc"; l'indide de position prend la valeur 6
                  recv(fd, buf, 2, MSG_PEEK);  // Lit "dd"; l'indice de position prend la valeur 8
                  recv(fd, buf, 2, 0);         // Lit "aa"; l'indice de position prend la valeur 6
                  recv(fd, buf, 2, MSG_PEEK);  // Lit "ee"; l'indice position prend la valeur 8

       SO_PEERCRED
              Renvoie  les  données d'authentification du processus étranger connecté à cette socket. Cela n'est
              possible que pour les sockets de flux AF_UNIX connectées et les paires de sockets AF_UNIX de  flux
              et de datagrammes crées avec socketpair(2) ; consultez unix(7). Les données retournées sont celles
              qui  étaient  effectives  au  moment  de l'appel à connect(2) ou socketpair(2). L'argument est une
              structure ucred. Il faut définir la macro de test de fonctionnalité _GNU_SOURCE  pour  activer  la
              définition de cette structure dans <sys/socket.h>. Cette option de socket peut être seulement lue,
              et pas modifiée.

       SO_PRIORITY
              Définir  la  priorité  définie par le protocole pour tous les paquets envoyés sur la socket. Linux
              utilise cette valeur pour trier les files réseau : les paquets avec une  priorité  élevée  peuvent
              être  traités  d'abord,  en fonction de la gestion des files sur le périphérique. Pour ip(7), cela
              définit aussi le champ IP Type-Of-Service (TOS) pour les paquets sortants. Établir une priorité en
              dehors de l'intervalle allant de 0 à 6 nécessite la capacité CAP_NET_ADMIN.

       SO_PROTOCOL (depuis Linux 2.6.32)
              Récupère le protocole de socket en tant qu'entier, en renvoyant une valeur telle que IPPROTO_SCTP.
              Consultez socket(2)  pour plus de détails. Cette option de socket peut être seulement lue, et  pas
              modifiée.

       SO_RCVBUF
              Définit  ou  lit la taille maximale en octets du tampon de réception. Le noyau double cette valeur
              (pour prévoir de l'espace pour les opérations de service)  lorsque  la  valeur  est  définie  avec
              setsockopt(2),  et  cette valeur doublée est retournée par getsockopt(2). La valeur par défaut est
              définie par le fichier /proc/sys/net/core/rmem_default et la valeur maximale autorisée est définie
              par le fichier /proc/sys/net/core/rmem_max. La valeur (doublée) minimale  pour  cette  option  est
              256.

       SO_RCVBUFFORCE (depuis Linux 2.6.14)
              En utilisant cette option de socket, un processus privilégié (CAP_NET_ADMIN) peut exécuter la même
              tâche que SO_RCVBUF, mais la limite rmem_max peut être remplacée.

       SO_RCVLOWAT et SO_SNDLOWAT
              Indique  le  nombre minimal d'octets dans le tampon pour que la couche socket passe les données au
              protocole (SO_SNDLOWAT) ou à l'utilisateur en  réception  (SO_RCVLOWAT).  Ces  deux  valeurs  sont
              initialisées   à   1.  SO_SNDLOWAT  n'est  pas  modifiable  (setsockopt(2)  échoue  avec  l'erreur
              ENOPROTOOPT). SO_RCVLOWAT est modifiable seulement depuis Linux 2.4. Les appels système  select(2)
              et  poll(2)  ne respectent pour le moment pas la définition de SO_RCVLOWAT sur Linux, et marque la
              socket comme lisible même lorsqu'un unique octet de données est disponible.  La  lecture  suivante
              depuis la socket sera bloquée jusqu'à ce que SO_RCVLOWAT octets soient disponibles.

       SO_RCVTIMEO et SO_SNDTIMEO
              Indiquer  le  délai  maximal d'émission ou de réception avant de signaler une erreur. Le paramètre
              est une structure timeval. Si une fonction d'entrée ou de sortie bloque pendant cet intervalle  de
              temps et que des données ont été envoyées ou reçues, la valeur de retour de cette fonction sera la
              quantité  de  données transmises ; si aucune donnée n'a été transmise et si le délai d'attente est
              atteint, -1 est renvoyé et errno est positionnée à EAGAIN ou  EWOULDBLOCK,  ou  EINPROGRESS  (pour
              connect(2)),  comme  si la socket avait été définie comme non bloquante. Si le délai d'attente est
              défini à zéro (valeur par défaut), l'opération  ne  sera  jamais  interrompue.  Les  délais  n'ont
              d'effet  que  pour  les  appels  système  faisant  des  E/S  sur des sockets (par exemple read(2),
              recvmsg(2), send(2), sendmsg(2)) ; ils n'ont pas d'effet pour select(2),  poll(2),  epoll_wait(2),
              etc.

       SO_REUSEADDR
              Indique  que les règles utilisées pour la validation des adresses fournies dans un appel à bind(2)
              doivent autoriser la réutilisation des adresses locales. Pour les sockets AF_INET,  cela  signifie
              que  la  socket  peut  être  attachée  à n'importe quelle adresse sauf lorsqu'une socket active en
              écoute y est liée. Lorsque la socket en écoute est attachée à INADDR_ANY avec un port  spécifique,
              il  n'est pas possible de s'attacher à ce port quelle que soit l'adresse locale. L'argument est un
              attribut booléen entier.

       SO_RXQ_OVFL (depuis Linux 2.6.33)
              Indique qu'un message auxiliaire (cmsg) sous la forme d'une valeur non-signée et codée sur 32 bits
              doit être jointe aux tampons de sockets (skbs), indiquant le  nombre  de  paquets  perdus  par  la
              socket entre les deux derniers paquets reçus.

       SO_SNDBUF
              Définit  ou  lit  la  taille maximale en octets du tampon d'émission. Le noyau double cette valeur
              (pour prévoir de l'espace pour les opérations de service)  lorsque  la  valeur  est  définie  avec
              setsockopt(2),  et  cette valeur doublée est retournée par getsockopt(2). La valeur par défaut est
              définie par le fichier /proc/sys/net/core/wmem_default et la valeur maximale autorisée est définie
              par le fichier /proc/sys/net/core/wmem_max. La valeur (doublée) minimale  pour  cette  option  est
              2048.

       SO_SNDBUFFORCE (depuis Linux 2.6.14)
              En utilisant cette option de socket, un processus privilégié (CAP_NET_ADMIN) peut exécuter la même
              tâche que SO_SNDBUF, mais la limite wmem_max peut être remplacée.

       SO_TIMESTAMP
              Active  ou  désactive  la  réception des messages de contrôle SO_TIMESTAMP. Le message de contrôle
              d'horodatage est envoyé avec le niveau SOL_SOCKET et le champ cmsg_data est une structure  timeval
              indiquant  la date de réception du dernier paquet fourni à l'utilisateur dans cet appel. Consultez
              cmsg(3) pour plus de détails sur les messages de contrôle.

       SO_TYPE
              Lit le type de socket, sous forme d'entier (comme SOCK_STREAM). Cette option de socket  peut  être
              seulement lue, et pas modifiée.

       SO_BUSY_POLL (depuis Linux 3.11)
              Définit  la  durée  approximative,  en  milliseconde,  d’attente  active de réception bloquante en
              absence de données. CAP_NET_ADMIN est nécessaire pour augmenter cette valeur. La valeur par défaut
              pour cette option est contrôlée par le fichier /proc/sys/net/core/busy_read.

              La valeur dans  le  fichier  /proc/sys/net/core/busy_poll  détermine  la  durée  pendant  laquelle
              select(2)  et  poll(2)  seront  en  attente  active  lors  d’une  opération  sur  des sockets avec
              SO_BUSY_POLL défini et qu’aucun événement à signaler n’est trouvé.

              Dans les deux cas, l’attente active ne sera réalisée que lorsque les dernières données reçues  par
              la socket proviennent d’un périphérique réseau qui ne prend pas en charge cette option.

              Bien  que  l’attente  active  peut  améliorer  la  latence de quelques applications, une attention
              particulière doit être portées à son utilisation puisque cela augmentera à la  fois  l’utilisation
              du processeur et la consommation puissance.

   Signaux
       Lors  de  l'écriture  sur  une  socket  orientée  connexion  qui  a  été  fermée (localement ou à l'autre
       extrémité), le signal SIGPIPE est envoyé au processus qui écrivait, et EPIPE est renvoyé. Le signal n'est
       pas envoyé lorsque l'appel d'écriture indiqué contenait l'attribut MSG_NOSIGNAL.

       Lorsque demandé avec l'option FIOSETOWN de fcntl(2) ou l'option SIOCSPGRP de ioctl(2),  le  signal  SIGIO
       est  envoyé  quand  un  événement d'entrée-sortie a lieu. Il est possible d'utiliser poll(2) ou select(2)
       dans le gestionnaire de signal pour savoir sur quelle socket l'événement s'est produit.  Une  alternative
       (sous  Linux 2.2)  est  de  définir un signal en temps-réel avec le fnctl(2) F_SETSIG. Le gestionnaire du
       signal en temps-réel sera appelé avec le descripteur  de  fichier  dans  le  champ  si_fd  de  siginfo_t.
       Consultez fcntl(2) pour plus d'informations.

       Dans  certains  cas  (par  exemple,  différents  processus accédant à la même socket), la condition ayant
       déclenché le signal SIGIO peut avoir déjà disparu quand  le  processus  réagit  au  signal.  Si  cela  se
       produit, le processus devrait attendre à nouveau car Linux renverra ce signal ultérieurement.

   Interfaces /proc
       Les  paramètres  réseau  de  base  des  sockets  sont accessibles en utilisant les fichiers du répertoire
       /proc/sys/net/core/.

       rmem_default
              contient la taille en octets par défaut du tampon de réception.

       rmem_max
              contient la taille maximale en octets du tampon de réception qu'un utilisateur peut  définir  avec
              l'option SO_RCVBUF de la socket.

       wmem_default
              contient la taille en octets par défaut du tampon d'émission de la socket.

       wmem_max
              contient  la  taille  maximale  en octets du tampon d'émission qu'un utilisateur peut définir avec
              l'option SO_SNDBUF de la socket.

       message_cost et message_burst
              configurent le filtrage par jeton utilisé pour limiter la charge des messages d'avertissement  dus
              aux événements réseau extérieurs.

       netdev_max_backlog
              contient le nombre maximal de paquets dans la file d'entrée globale.

       optmem_max
              contient  la  taille  maximale  par  socket  des  données  de  service  et des données de contrôle
              utilisateur comme les iovecs.

   Ioctls
       Ces opérations sont accessibles en utilisant ioctl(2) :

           error = ioctl(ip_socket, type_ioctl, &valeur_résultat);

       SIOCGSTAMP
              Renvoie  une  structure  timeval  avec  la  date  de  réception  du  dernier  paquet  transmis   à
              l'utilisateur.  Cela  est  utile  pour  des  mesures  précises  du temps de cheminement. Consultez
              setitimer(2) pour une description de la structure timeval. L'ioctl ne doit  être  utilisé  que  si
              l'option  SO_TIMESTAMP de la socket n'est pas définie. Sinon, la date du dernier paquet reçu quand
              SO_TIMESTAMP n'était pas définie est renvoyée, provoquant un  échec  s'il  n'existe  pas  de  tels
              paquets (c'est-à-dire que ioctl(2) renvoie -1 avec un errno défini à ENOENT).

       SIOCSPGRP
              Définit  le  processus  ou  le  groupe  de  processus  à  qui  envoyer les signaux SIGIO ou SIGURG
              lorsqu'une opération d'entrée-sortie asynchrone est terminée  ou  si  des  données  urgentes  sont
              disponibles.  L'argument  est  un  pointeur sur un pid_t. Si l'argument est positif, le signal est
              envoyé à ce processus. S'il est négatif,  le  signal  est  envoyé  au  groupe  de  processus  dont
              l'identifiant  correspond  à  la  valeur  absolue de l'argument. Un processus ne peut demander que
              l'émission vers lui-même ou son propre groupe, à moins  qu'il  ait  la  capacité  CAP_KILL  ou  un
              identifiant d'utilisateur effectif nul.

       FIOASYNC
              Change  l'attribut  O_ASYNC  pour  activer  ou désactiver le mode d'entrée-sortie asynchrone de la
              socket. Un mode d'entrée-sortie asynchrone signifie que le signal SIGIO ou le signal  défini  avec
              F_SETSIG est envoyé quand un événement d'entrée-sortie se produit.

              Le  paramètre  est  un  booléen entier. (Cette opération est synonyme de l'utilisation de fcntl(2)
              pour définir l'attribut O_ASYNC).

       SIOCGPGRP
              Lit le processus ou le groupe de processus auquel les signaux SIGIO ou SIGURG sont  envoyés.  Zéro
              est obtenu quand aucun n'est défini.

       Opérations fcntl(2) valables :

       FIOGETOWN
              Identique à l'ioctl(2) SIOCGPGRP.

       FIOSETOWN
              Identique à l'ioctl(2) SIOCSPGRP.

VERSIONS

       SO_BINDTODEVICE  a  été  introduit  dans  Linux 2.0.30.  SO_PASSCRED  est une nouveauté de Linux 2.2. Les
       interfaces /proc ont été introduites  dans  Linux 2.2.  SO_RCVTIMEO  et  SO_SNDTIMEO  sont  gérés  depuis
       Linux 2.3.41.  Auparavant,  les délais d'attente étaient définis dans les protocoles et ne pouvaient être
       ni lus ni modifiés.

NOTES

       Linux suppose que la moitié du tampon d'émission/réception est utilisé pour les  structures  internes  du
       noyau.  Ainsi  les  valeurs dans les fichiers /proc correspondants sont deux fois plus grandes que ce que
       l'on peut observer directement sur le câble.

       Linux ne permettra la réutilisation des ports qu'avec l'option SO_REUSEADDR lorsque celle-ci sera définie
       à la fois par le précédent programme qui a effectué un bind(2) sur le port et par le programme  qui  veut
       réutiliser  ce  port.  Ceci  diffère  de  certaines implémentations (par exemple, sur FreeBSD) où seul le
       dernier programme doit définir l'option SO_REUSEADDR. Habituellement,  cette  différence  est  invisible,
       puisque, par exemple, un programme serveur est conçu pour toujours définir cette option.

BOGUES

       Des  options CONFIG_FILTER de socket, SO_ATTACH_FILTER et SO_DETACH_FILTER, ne sont pas documentées. Pour
       les utiliser, il est conseillé d'utiliser la bibliothèque libpcap.

VOIR AUSSI

       connect(2), getsockopt(2), setsockopt(2), socket(2), capabilities(7), ddp(7), ip(7),  packet(7),  tcp(7),
       udp(7), unix(7)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction de
       Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org>  ou  par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

Linux                                            21 février 2014                                       SOCKET(7)