.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1983, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" $Id: socket.2,v 1.4 1999/05/13 11:33:42 freitag Exp $ .\" .\" Modified 1993-07-24 by Rik Faith .\" Modified 1996-10-22 by Eric S. Raymond .\" Modified 1998, 1999 by Andi Kleen .\" Modified 2002-07-17 by Michael Kerrisk .\" Modified 2004-06-17 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SOCKET 2 "9 juin 2020" Linux "Manuel du programmeur Linux" .SH NOM socket \- Créer un point de communication .SH SYNOPSIS \fB#include \fP /* Consultez NOTES */ .br \fB#include \fP .PP \fBint socket(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB);\fP .SH DESCRIPTION \fBsocket\fP() crée un point de communication et renvoie un descripteur de fichier qui s'y rapporte. Le descripteur de fichier renvoyé par un appel réussi sera celui au numéro le plus bas qui n'est pas ouvert actuellement pour le processus. .PP Le paramètre \fIdomain\fP indique le domaine de communication\ ; cela sélectionne la famille de protocole à employer. Elles sont définies dans le fichier \fI\fP. Les formats actuellement compris par le noyau Linux sont : .TS tab(:); l1 lw40 l. Nom:Objectif:Page de manuel T{ \fBAF_UNIX\fP T}:T{ Communication locale T}:T{ \fBunix\fP(7) T} T{ \fBAF_LOCAL\fP T}:T{ Synonyme de \fBAF_UNIX\fP T}:T{ T} T{ \fBAF_INET\fP T}:Protocoles Internet IPv4:T{ \fBip\fP(7) T} T{ \fBAF_AX25\fP T}:T{ Protocole radio amateur AX.25 T}:T{ .\" Part of ax25-tools \fBax25\fP(4) T} T{ \fBAF_IPX\fP T}:IPX \- Protocoles Novell: T{ \fBAF_APPLETALK\fP T}:AppleTalk:T{ \fBddp\fP(7) T} T{ \fBAF_X25\fP T}:Protocole ITU\-T X.25 / ISO\-8208:T{ \fBx25\fP(7) T} T{ \fBAF_INET6\fP T}:Protocoles Internet IPv6:T{ \fBipv6\fP(7) T} T{ \fBAF_DECnet\fP T}:T{ Sockets de protocole DECet T} T{ \fBAF_KEY\fP T}:T{ Protocole de gestion de clé, développé à l'origine pour être utilisé avec IPsec T} T{ \fBAF_NETLINK\fP T}:T{ Interface utilisateur noyau T}:T{ \fBnetlink\fP(7) T} T{ \fBAF_PACKET\fP T}:T{ Interface paquet bas\-niveau T}:T{ \fBpacket\fP(7) T} T{ \fBAF_RDS\fP T}:T{ .\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4 Protocole Reliable Datagram Sockets (RDS) T}:T{ .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7 .\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7 \fBrds\fP(7) .br \fBrds\-rdma\fP(7) T} T{ \fBAF_PPPOX\fP T}:T{ Couche de transport PPP générique pour paramétrer des tunnels L2 (L2TP et PPPoE) T} T{ \fBAF_LLC\fP T}:T{ .\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa Protocole de contrôle de lien logique (IEEE 802.2 LLC) T} T{ \fBAF_IB\fP T}:T{ .\" commits: 8d36eb01da5d371f..ce117ffac2e93334 Adressage natif InfiniBand T} T{ \fBAF_MPLS\fP T}:T{ .\" commits: 0189197f441602acdca3f97750d392a895b778fd Multiprotocole Label Switching T} T{ \fBAF_CAN\fP T}:T{ .\" commits: 8dbde28d9711475a..5423dd67bd0108a1 Protocole du bus Controller Area Network automotive T} T{ \fBAF_TIPC\fP T}:T{ .\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4 Protocole TIPC, «\ sockets de domaine de grappe\ » T} T{ \fBAF_BLUETOOTH\fP T}:T{ .\" commits: 8d36eb01da5d371f..ce117ffac2e93334 Protocole du socket de bas niveau Bluetooth T} T{ \fBAF_ALG\fP T}:T{ .\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314 Interface avec l'API de chiffrement du noyau T} T{ \fBAF_VSOCK\fP T}:T{ .\" commit: d021c344051af91f42c5ba9fdedc176740cbd238 Protocole VSOCK (initialement «\ VMWare VSockets\ ») de communication hyperviseur\-invité T}:T{ \fBvsock\fP(7) T} T{ \fBAF_KCM\fP T}:T{ .\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314 Interface KCM (multiplexeur de connexion au noyau) T} T{ \fBAF_XDP\fP T}:T{ .\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7 Interface XDP (express data path) T} .TE .PP Vous pouvez trouver plus de détails sur les familles d'adresses ci\-dessus, ainsi que des informations sur plusieurs autres familles d'adresses, dans \fBaddress_families\fP(7). .PP Le socket a le \fItype\fP indiqué, ce qui indique la sémantique des communications. Les types définis actuellement sont\ : .TP 16 \fBSOCK_STREAM\fP Support de dialogue garantissant l'intégrité, fournissant un flux de données binaires, et intégrant un mécanisme pour les transmissions de données hors\-bande. .TP \fBSOCK_DGRAM\fP Prise en charge des datagrammes (transmissions sans connexion, non garantie, de datagrammes de longueur maximale fixe). .TP \fBSOCK_SEQPACKET\fP Dialogue garantissant l'intégrité, pour le transport de datagrammes de longueur fixe. Le lecteur doit lire le paquet de données complet à chaque appel système récupérant l'entrée. .TP \fBSOCK_RAW\fP Accès direct aux données réseau. .TP \fBSOCK_RDM\fP Transmission fiable de datagrammes, sans garantie de l'ordre de délivrance. .TP \fBSOCK_PACKET\fP Obsolète, à ne pas utiliser dans les programmes actuels. Consultez \fBpacket\fP(7). .PP Certains types de sockets peuvent ne pas être implémentés par toutes les familles de protocoles. .PP Depuis Linux\ 2.6.27, le paramètre \fItype\fP a un autre objectif\ : en plus d'indiquer le type de socket, il peut inclure les valeurs suivantes en les combinant par un OU binaire, pour modifier le comportement de \fBsocket\fP()\ : .TP 16 \fBSOCK_NONBLOCK\fP Placer l'attribut d'état de fichier \fBO_NONBLOCK\fP sur la description du fichier ouvert référencée par le nouveau descripteur de fichier (consulter \fBopen\fP(2)). Utiliser cet attribut économise des appels supplémentaires à \fBfcntl\fP(2) pour obtenir le même résultat. .TP \fBSOCK_CLOEXEC\fP Placer l'attribut «\ close\-on\-exec\ » (\fBFD_CLOEXEC\fP) sur le nouveau descripteur de fichier. Consultez la description de l'attribut \fBO_CLOEXEC\fP dans \fBopen\fP(2) pour savoir pourquoi cela peut être utile. .PP Le protocole à utiliser sur le socket est indiqué par l'argument \fIprotocol\fP. Normalement, il n'y a qu'un seul protocole par type de socket pour une famille donnée, auquel cas l'argument \fIprotocol\fP peut être nul. Néanmoins, rien ne s'oppose à ce que plusieurs protocoles existent, auquel cas il est nécessaire de le spécifier. Le numéro de protocole dépend du domaine de communication du socket\ ; consultez \fBprotocols\fP(5). Consultez \fBgetprotoent\fP(3) pour savoir comment associer un nom de protocole à un numéro. .PP Des sockets de type \fBSOCK_STREAM\fP sont des flux d'octets full\-duplex. Ils ne préservent pas les limites d'enregistrements. Un socket SOCK_STREAM doit être dans un état \fIconnecté\fP avant que des données puissent y être lues ou écrites. Une connexion sur un autre socket est établie par l'appel système \fBconnect\fP(2). Une fois connecté, les données y sont transmises par \fBread\fP(2) et \fBwrite\fP(2) ou par des variantes de \fBsend\fP(2) et \fBrecv\fP(2). Quand une session se termine, on referme le socket avec \fBclose\fP(2). Les données hors\-bande sont envoyées ou reçues comme il est décrit dans \fBsend\fP(2) et \fBrecv\fP(2). .PP Les protocoles de communication qui implémentent les sockets \fBSOCK_STREAM\fP garantissent qu'aucune donnée n'est perdue ou dupliquée. Si un bloc de données, pour lequel le correspondant a suffisamment de place dans son tampon, n'est pas transmis correctement dans un délai raisonnable, la connexion est considérée comme inutilisable. Si l'option \fBSO_KEEPALIVE\fP est activée sur le socket, le protocole vérifie, d'une manière qui lui est spécifique, si le correspondant est toujours actif. Un signal \fBSIGPIPE\fP est envoyé au processus tentant d'écrire sur un socket inutilisable, forçant les programmes ne gérant pas ce signal à se terminer. Les sockets de type \fBSOCK_SEQPACKET\fP emploient les mêmes appels système que ceux de types \fBSOCK_STREAM\fP, à la différence que la fonction \fBread\fP(2) ne renverra que le nombre d'octets requis, et toute autre donnée restante dans le paquet sera éliminée. De plus, les frontières des messages seront préservées. .PP Les sockets de type \fBSOCK_DGRAM\fP ou \fBSOCK_RAW\fP permettent l'envoi de datagrammes aux correspondants indiqués dans l'appel système \fBsendto\fP(2). Les datagrammes sont généralement lus par la fonction \fBrecvfrom\fP(2), qui fournit également l'adresse du correspondant. .PP Les sockets \fBSOCK_PACKET\fP sont obsolètes. Ils servent à recevoir les paquets bruts directement depuis le gestionnaire de périphérique. Utilisez plutôt \fBpacket\fP(7). .PP Un appel à \fBfcntl\fP(2) avec l'argument \fBF_SETOWN\fP permet de préciser un processus ou un groupe de processus qui recevront un signal \fBSIGURG\fP lors de l'arrivée de données hors\-bande, ou le signal \fBSIGPIPE\fP lorsqu'une connexion sur un socket \fBSOCK_STREAM\fP se termine inopinément. Cette fonction permet également de définir le processus ou groupe de processus qui recevront une notification asynchrone des événements d'entrées\-sorties par le signal \fBSIGIO\fP. L'utilisation de \fBF_SETOWN\fP est équivalent à un appel \fBioctl\fP(2) avec l'argument \fBFIOSETOWN\fP ou \fBSIOCSPGRP\fP. .PP Lorsque le réseau indique une condition d'erreur au module du protocole (par exemple avec un message ICMP pour IP), un drapeau signale une erreur en attente sur le socket. L'opération suivante sur ce socket renverra ce code d'erreur. Pour certains protocoles, il est possible d'activer une file d'attente d'erreurs par socket. Pour plus de détails, consultez \fBIP_RECVERR\fP dans \fBip\fP(7). .PP Les opérations sur les sockets sont contrôlées par des \fIoptions\fP du niveau socket. Ces options sont définies dans \fI\fP. Les fonctions \fBsetsockopt\fP(2) et \fBgetsockopt\fP(2) sont utilisées respectivement pour définir ou lire les options. .SH "VALEUR RENVOYÉE" \fBsocket\fP() renvoie un descripteur référençant le socket créé en cas de réussite. En cas d'échec \fB\-1\fP est renvoyé, et \fIerrno\fP contient le code d'erreur. .SH ERREURS .TP \fBEACCES\fP La création d'un socket avec le type et le protocole indiqués n'est pas autorisée. .TP \fBEAFNOSUPPORT\fP L'implémentation ne supporte pas la famille d'adresses indiquée. .TP \fBEINVAL\fP Protocole inconnu, ou famille de protocole inexistante. .TP \fBEINVAL\fP .\" Since Linux 2.6.27 Attributs incorrects dans \fItype\fP. .TP \fBEMFILE\fP La limite du nombre de descripteurs de fichiers par processus a été atteinte. .TP \fBENFILE\fP La limite du nombre total de fichiers ouverts pour le système entier a été atteinte. .TP \fBENOBUFS\fP ou \fBENOMEM\fP Pas suffisamment d'espace pour allouer les tampons nécessaires. Le socket ne peut être créé tant que suffisamment de ressources ne sont pas libérées. .TP \fBEPROTONOSUPPORT\fP Le type de protocole, ou le protocole lui\-même n'est pas disponible dans ce domaine de communication. .PP D'autres erreurs peuvent être dues aux modules de protocoles sous\-jacents. .SH CONFORMITÉ POSIX.1\-2001, POSIX.1\-2008, 4.4BSD. .PP Les attributs \fBSOCK_NONBLOCK\fP et \fBSOCK_CLOEXEC\fP sont spécifiques à Linux. .PP La fonction \fBsocket\fP() est apparue dans BSD\ 4.2. Elle est généralement portable de/vers les systèmes non\-BSD supportant des clones des sockets BSD (y compris les variantes de System\ V). .SH NOTES POSIX.1\-2001 ne requiert pas l'inclusion de \fI\fP, et cet en\(hytête n'est pas nécessaire sous Linux. Cependant, il doit être inclus sous certaines implémentations historiques (BSD), et les applications portables devraient probablement l'utiliser. .PP Les constantes explicites utilisées sous BSD\ 4.x pour les familles de protocoles sont \fBPF_UNIX\fP, \fBPF_INET\fP, etc. alors que \fBAF_UNIX\fP, \fBAF_INET\fP, etc. sont utilisées pour les familles d'adresses. Toutefois, même la page de manuel de BSD indiquait «\ La famille de protocoles est généralement la même que la famille d'adresses\ », et les standards ultérieurs utilisent AF_* partout. .SH EXEMPLES Un exemple d'utilisation de \fBsocket\fP() se trouve dans la page de manuel de \fBgetaddrinfo\fP(3). .SH "VOIR AUSSI" \fBaccept\fP(2), \fBbind\fP(2), \fBclose\fP(2), \fBconnect\fP(2), \fBfcntl\fP(2), \fBgetpeername\fP(2), \fBgetsockname\fP(2), \fBgetsockopt\fP(2), \fBioctl\fP(2), \fBlisten\fP(2), \fBread\fP(2), \fBrecv\fP(2), \fBselect\fP(2), \fBsend\fP(2), \fBshutdown\fP(2), \fBsocketpair\fP(2), \fBwrite\fP(2), \fBgetprotoent\fP(3), \fBaddress_families\fP(7), \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7) .PP «\ An Introductory 4.3BSD Interprocess Communication Tutorial\ » et «\ BSB Interprocess Communication Tutorial\ », réimprimés dans \fIUNIX Programmer's Supplementary Documents Volume 1\fP. .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .