Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] socket - Interface Linux des sockets. [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b][/b] [b][i]mysocket = socket(int socket_family , int socket_type , int protocol );[/i][/b] [size=18] [b]Description[/b] [/size] Cette page de manuel documente l'interface utilisateur de l'implémentation Linux des sockets réseau. Les sockets compatibles BSD représentent une interface uniforme entre le processus utilisateur et les piles de protocoles réseau dans le noyau. Les modules des protocoles sont groupés en [i]familles de protocoles[/i] comme [b]PF_INET , PF_IPX , PF_PACKET[/b] et en [i]types de sockets[/i] comme [b]SOCK_STREAM[/b] ou [b]SOCK_DGRAM .[/b] Voir [b]socket (2)[/b] pour plus de détails sur les familles et les types de sockets. [size=18] [b]Fonctions de la couche socket[/b] [/size] Ces fonctions servent à un processus utilisateur pour envoyer ou recevoir des paquets et pour faire d'autres opérations sur les sockets. Pour plus de détails, voir leur pages de manuel respectives. [b]socket (2)[/b] crée une socket, [b]connect (2)[/b] connecte une socket à une adresse de socket distante, la fonction [b]bind (2)[/b] attache une socket à une adresse locale, [b]listen (2)[/b] indique à la socket que de nouvelles connexions doivent y être acceptées, et [b]accept (2)[/b] fournit une nouvelle socket avec la nouvelle connexion entrante. [b]socketpair (2)[/b] renvoie deux sockets anonymes connectées (seulement implémenté pour quelques familles locales comme [b]PF_UNIX )[/b] [b]send (2),[/b] [b]sendto (2),[/b] et [b]sendmsg (2)[/b] envoient des données sur une socket, et [b]recv (2),[/b] [b]recvfrom (2),[/b] [b]recvmsg (2)[/b] reçoivent des données depuis une socket. [b]poll (2)[/b] et [b]select (2)[/b] attendent que des données arrivent ou que l'émission soit possible. De plus, les opérations d'entrées-sorties standards comme [b]write (2),[/b] [b]writev (2),[/b] [b]sendfile (2),[/b] [b]read (2),[/b] et [b]readv (2) [/b] peuvent servir à écrire ou lire des données. [b]getsockname (2)[/b] renvoie l'adresse locale d'une socket et [b]getpeername (2)[/b] renvoie l'adresse de la socket distante. [b]getsockopt (2)[/b] et [b]setsockopt (2)[/b] servent à fixer ou lire des options du niveau socket ou protocole. [b]ioctl (2)[/b] peut servir pour lire ou écrire d'autres options. [b]close (2)[/b] sert à fermer une socket. [b]shutdown (2)[/b] ferme un sens de communication d'une socket full-duplex connectée. Le positionnement, ou l'utilisation de [b]pread (2) [/b] et [b]pwrite (2)[/b] avec un décalage non-nul n'est pas possible sur les sockets On peut faire des entrées-sorties non-bloquante sur les sockets en fixant l'attribut [b]O_NONBLOCK[/b] sur le descripteur de la socket avec [b]fcntl (2).[/b] Ensuite toutes les opérations qui devraient normalement bloquer se terminent immédiatement avec l'erreur [b]EAGAIN [/b] (l'opération devra être retentée ultérieurement). [b]connect (2) [/b] renverra l'erreur [b]EINPROGRESS .[/b] L'utilisateur peut alors attendre divers événements avec [b]poll (2)[/b] ou [b]select (2). [/b] .TS tab(:) allbox; c s s l l l. Événement E/S Événemt:Poll:Occurrence Lecture:POLLIN:T{ De nouvelles données sont arrivées. T} Lecture:POLLIN:T{ Une connexion est établie (pour les sockets orientées connexion) T} Lecture:POLLHUP:T{ Déconnexion du correspondant. T} Lecture:POLLHUP:T{ Connexion rompue (seulement pour les protocoles orientés connexion). Si on écrit sur la socket, le signal [b]SIGPIPE [/b] est aussi émis. T} Écriture:POLLOUT:T{ La socket a assez de place dans le [b][/b] buffer d'émission pour écrire de nouvelles données. T} Lect/Écrit.:T{ POLLIN [b][/b] POLLOUT T}:T{ Un [b]connect (2)[/b] en attente est terminé. T} Lect/Écrit.:POLLERR:Une erreur asynchrone s'est produite Lect/Écrit.:POLLHUP:T{ Le correspondant à clos un sens de communication T} Exception:POLLPRI:T{ Données urgentes arrivées, le signal [b]SIGURG[/b] est alors envoyé. T} .TE Une alternative à l'utilisation de poll/select est de laisser le noyau informer l'application à propos des événements par l'intermédiaire d'un signal [b]SIGIO .[/b] Pour cela l'attribut [b]FASYNC[/b] doit être placé sur le descripteur de la socket via [b]fcntl (2)[/b] et un gestionnaire de signal pour [b]SIGIO[/b] doit être installé avec [b]sigaction (2). [/b] Voir les remarques sur les [i]SIGNAUX[/i] plus bas. [size=18] [b]Options[/b] [/size] Ces options communes à toutes les sockets peuvent être écrites en utilisant [b]setsockopt (2)[/b] et lues avec [b]getsockopt (2)[/b] avec le niveau socket positionné sur [b]SOL_SOCKET .[/b] [b]SO_KEEPALIVE[/b] [table][row][col] [/col][col]Valide l'émission de messages périodiques gardant la socket ouverte pour les sockets orientées connexion. Il s'agit d'un attribut entier booléen.[/col][/row][/table] [b]SO_OOBINLINE[/b] [table][row][col] [/col][col]Si cette option est activée, les données hors-bande sont placées directement dans le flux de données reçues. Sinon elles ne sont transmises que si l'attribut [b]MSG_OOB [/b] est demandé durant la réception.[/col][/row][/table] [b]SO_RCVLOWAT et SO_SNDLOWAT[/b] [table][row][col] [/col][col]Indiquent le nombre minimal d'octets dans le buffer pour que la couche socket passe les données au protocole [b]( SO_SNDLOWAT ) [/b] ou à l'utilisateur en réception [b]( SO_RCVLOWAT ).[/b] Ces deux valeurs ne sont pas modifiables sous Linux et la taille de leur argument est toujours fixée à un octet. [b]getsockopt [/b] peut lire les valeurs, mais [b]setsockopt [/b] renverra toujours [b]ENOPROTOOPT . [/b][/col][/row][/table] [b]SO_RCVTIMEO et SO_SNDTIMEO[/b] [table][row][col] [/col][col]Indiquent le délai maximal d'émission ou de réception avant de renvoyer une erreur. Sous Linux ces valeurs sont fixées dans les protocoles et ne peuvent être ni lues ni modifiées. Leurs fonctionnalités peuvent être émulées à l'aide de [b]alarm (2)[/b] ou [b]setitimer (2).[/b][/col][/row][/table] [b]SO_BSDCOMPAT[/b] [table][row][col] [/col][col]Valider une compatibilité bogue-à-bogue avec BSD. Cela n'est pris en compte que par le module du protocole UDP et sera supprimé dans le futur. Dans ce mode, les erreurs ICMP reçues pour une socket UDP ne seront pas transmises aux programmes utilisateurs. Linux 2.0 donnait aussi une compatibilité bogue-à-bogue pour les sockets raw avec cette option, mais cela a été éliminé dans Linux 2.2. Il vaut mieux corriger les programmes utilisateur que de valider cet attribut.[/col][/row][/table] [b]SO_PASSCRED[/b] [table][row][col] [/col][col]Autorise ou interdit la réception des messages de contrôle [b]SCM_CREDENTIALS .[/b] Pour plus de détails, voir [b]unix (7). [/b][/col][/row][/table] [b]SO_PEERCRED[/b] [table][row][col] [/col][col]Renvoie les authentifications du processus connecté à l'autre extrémité de la socket. N'est utile que pour les sockets [b]PF_UNIX .[/b] Voir [b]unix (7). [/b] L'argument est une structure [b]ucred .[/b] Seulement valide avec [b]getsockopt .[/b][/col][/row][/table] [b]SO_BINDTODEVICE[/b] [table][row][col] [/col][col]Attacher cette socket à un périphérique donné, tel (lqeth0(rq, comme indiqué dans le nom d'interface transmis. Si le nom est une chaîne vide ou si la longueur d'option est nulle, l'attachement de la socket au périphérique est supprimé. L'option transmise est une chaîne terminée par un caractère nul, contenant le nom de l'interface, la longueur maximale étant [b]IFNAMSIZ .[/b] Si la socket est attachée à une interface, seuls les paquets reçus sur cette interface particulière sont traités par la socket. Remarquez que cela ne fonctionne que pour certains types de sockets, en particulier les sockets [b]AF_INET .[/b] Ceci n'est pas supporté pour les sockets packet (utilisez un [b]bind (8)[/b] normal dessus).[/col][/row][/table] [b]SO_DEBUG[/b] [table][row][col] [/col][col]Activer le débogage sur la socket. Seulement autorisé pour les processus avec la capacité [b]CAP_NET_ADMIN[/b] ou un UID effectif nul.[/col][/row][/table] [b]SO_REUSEADDR[/b] [table][row][col] [/col][col]Indique que les règles permettant la validation des adresses fournies dans un appel [b]bind (2) [/b] doivent autoriser la réutilisation des adresses locales. Pour les sockets [b]PF_INET[/b] cela signifie que la socket peut s'attacher à n'importe quelle adresse sauf s'il y a une attente active dessus. Lorsque la socket en attente est attachée à [b]INADDR_ANY[/b] avec un port spécifique, il n'est pas possible de s'attacher à nouveau à ce port quelque soit l'adresse locale.[/col][/row][/table] [b]SO_TYPE[/b] [table][row][col] [/col][col]Obtenir le type de socket, sous forme d'entier (comme [b]SOCK_STREAM ). [/b] Ne peut qu'être lu avec [b]getsockopt . [/b][/col][/row][/table] [b]SO_ACCEPTCONN[/b] [table][row][col] [/col][col]Renvoie une valeur indiquant si la socket a été déclarée comme acceptant les connexions à l'aide de [b]listen ().[/b] La valeur 0 indique que la socket n'est pas en attente de connexions ; la valeur 1 indique que la socket accepte les connexions. Peut eulement être lu avec [b]getsockopt .[/b][/col][/row][/table] [b]SO_DONTROUTE[/b] [table][row][col] [/col][col]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 [b]MSG_DONTROUTE[/b] durant une opération [b]send (2)[/b] sur la socket. Il s'agir d'un attribut entier booléen.[/col][/row][/table] [b]SO_BROADCAST[/b] [table][row][col] [/col][col]Fixer ou lire l'attribut broadcast. Lorsqu'il est actif une socket datagramme reçoit les paquets envoyés à l'adresse broadcast et peut envoyer des paquets à une adresse broadcast. Cette option n'a aucun effet sur les sockets de type [b]SOCK_STREAM.[/b][/col][/row][/table] [b]SO_SNDBUF [/b] [table][row][col] [/col][col]Fixer ou lire la taille maximale en octets du buffer d'émission. La valeur par défaut est fixée par le sysctl [b]wmem_default [/b] et la valeur maximale autorisée est fixée par le sysctl [b]wmem_max .[/b][/col][/row][/table] [b]SO_RCVBUF[/b] [table][row][col] [/col][col]Fixer ou lire la taille maximale en octets du buffer de réception. La valeur par défaut est fixée par le sysctl [b]rmem_default [/b] et la valeur maximale autorisée est fixée par le sysctl [b]rmem_max .[/b][/col][/row][/table] [b]SO_LINGER[/b] [table][row][col] [/col][col]Fixer ou lire l'option [b]SO_LINGER .[/b] L'argument est une structure [b]linger .[/b][/col][/row][/table] [table][row][col] [/col][col] .nf .ta 4n 10n 22n struct linger { int l_onoff; /* actif */ int l_linger; /* délai maximal */ }; .ta .fi[/col][/row][/table] [table][row][col] [/col][col]Lorsque ce paramètre est actif, un appel [b]close (2)[/b] ou [b]shutdown (2)[/b] ne se terminera pas avant que tous les messages en attente pour la socket aient été correctement émise ou que le délai soit écoulé. Sinon, l'appel revient immédiatement et la fermeture est effectuée à l'arrière-plan. Lorsque la socket est fermée lors d'un [b]exit (3),[/b] elle se vide toujours à l'arrière-plan.[/col][/row][/table] [b]SO_PRIORITY[/b] [table][row][col] [/col][col]Fixe la priorité définie par le protocole pour tous les paquets envoyés sur la socket. Linux utiliser cette valeur pour trier les files réseau : les paquets avec une priorité élevés peuvent être traités d'abord, en fonction de la gestion des files sur le périphérique. Pour [b]ip (7),[/b] ceci fixe aussi le champ IP Type-Of-Service pour les paquets sortants.[/col][/row][/table] [b]SO_ERROR[/b] [table][row][col] [/col][col]Lire et effacer l'erreur en attente sur la socket. Uniquement valide pour [b]getsockopt .[/b] Renvoie un entier. [/col][/row][/table] [size=18] [b]Signaux[/b] [/size] Lorsqu'on écrit sur une socket orientée connexion qui a été fermée (localement ou à l'autre extrémité) le signal [b]SIGPIPE[/b] est envoyé au processus écrivain, et [b]EPIPE[/b] est renvoyé. Le signal n'est pas envoyé lorsque l'appel d'écriture contenait l'attribut [b]MSG_NOSIGNAL .[/b] Lorsqu'on le demande avec l'option [b]FIOSETOWN [/b] de fcntl ou l'option [b]SIOCSPGRP [/b] de ioctl, le signal [b]SIGIO [/b] est envoyée quand un événement d'entrée-sortie se produit. Il est possible d'utiliser [b]poll (2)[/b] ou [b]select (2)[/b] dans le gestionnaire de signal pour savoir sur quelle socket l'événement s'est produit? Une alternative (sous Linux 2.2) est de demander un signal temps-réel avec le fnctl [b]F_SETSIG .[/b] Le gestionnaire du signal temps-réel sera invoqué avec le descripteur de fichier dans le champ [i]si_fd[/i] de [b]siginfo_t .[/b] Voir [b]fcntl (2)[/b] pour plus d'informations. Dans certains cas (par exemple différents processus accédant à la même socket), la condition ayant déclenché le [b]SIGIO[/b] peut avoir disparu quand le processus réagit au signal. Si cela se produit le processus doit attendre à nouveau car Linux lui renverra le signal ultérieurement. [size=18] [b]Sysctls[/b] [/size] Les sysctls réseau des sockets de base sont accessibles avec les fichiers [b]/proc/sys/net/core/* [/b] ou avec l'interface [b]sysctl (2).[/b] [b]rmem_default[/b] [table][row][col] [/col][col]contient la taille en octets par défaut du buffer de réception.[/col][/row][/table] [b]rmem_max[/b] [table][row][col] [/col][col]contient la taille maximale en octets du buffer de réception qu'un utilisateur peut réclamer avec l'option [b]SO_RCVBUF[/b] de la socket.[/col][/row][/table] [b]wmem_default[/b] [table][row][col] [/col][col]contient la taille en octets par défaut du buffer d'émission.[/col][/row][/table] [b]wmem_max[/b] [table][row][col] [/col][col]contient la taille maximale en octets du buffer d'émission qu'un utilisateur peut réclamer avec l'option [b]SO_SNDBUF[/b] de la socket.[/col][/row][/table] [b]message_cost et message_burst [/b] [table][row][col] [/col][col]configurent le filtrage par jeton utilisé pour limiter la charge des message d'avertissement dus aux événements réseau extérieurs.[/col][/row][/table] [b]netdev_max_backlog [/b] [table][row][col] [/col][col]Nombre maximal de paquets dans la file d'entrée globale.[/col][/row][/table] [b]optmem_max[/b] [table][row][col] [/col][col]Taille maximale par socket des données de service et des données de contrôle utilisateur comme les iovecs.[/col][/row][/table] [size=18] [b]Ioctls[/b] [/size] Ces ioctls sont accessibles en utilisant [b]ioctl (2):[/b] [table][row][col] [/col][col] .nf [b][i]error = ioctl( ip_socket , ioctl_type , &value_result );[/i][/b] .fi[/col][/row][/table] [b]SIOCGSTAMP[/b] [table][row][col] [/col][col]Renvoie une structure [b]struct timeval [/b] avec l'horodatage de réception du dernier paquet transmis à l'utilisateur. Ceci permet des mesures précises de circulation sur le réseau. Voir [b]setitimer (2) [/b] pour le détail de la [b]struct timeval .[/b][/col][/row][/table] [b]SIOCSPGRP[/b] [table][row][col] [/col][col]Fixer le processus ou le groupe de processus auquel envoyer les signaux [b]SIGIO[/b] ou [b]SIGURG[/b] lorsqu'une opération d'entrée-sortie asynchrone s'est terminée ou si des données urgentes sont disponibles. L'argument est un pointeur sur un [b]pid_t . [/b] Si l'argument est positif, on envoie le signal à ce processus. S'il est négatif on l'envoie au groupe de processus dont l'identifiant correspond à la valeur absolue de l'argument. Un processus ne peut demande que l'émission vers lui-même ou son propre groupe, à moins qu'il ait la capacité [b]CAP_KILL[/b] ou un UID effectif nul.[/col][/row][/table] [b]FIOASYNC[/b] [table][row][col] [/col][col]Changer l'attribut [b]O_ASYNC[/b] pour activer ou désactiver le mode d'entrée-sortie asynchrone sur la socket. Le mode d'entrées-sorties asynchrones signifie que le signal [b]SIGIO [/b] ou le signal fixé avec [b]F_SETSIG[/b] est envoyé quand un événement d'entrée-sortie se produit.[/col][/row][/table] [table][row][col] [/col][col]L'argument est un attribut booléen entier.[/col][/row][/table] [b]SIOCGPGRP[/b] [table][row][col] [/col][col]Lire le processus ou le groupe de processus auquel les signaux [b]SIGIO[/b] ou [b]SIGURG[/b] sont envoyés, ou zéro si aucun n'est configuré.[/col][/row][/table] Fcntls valides: [b]FIOGETOWN [/b] [table][row][col] [/col][col]Comme l'ioctl SIOCGPGRP.[/col][/row][/table] [b]FIOSETOWN[/b] [table][row][col] [/col][col]Comme l'ioctl SIOCSPGRP.[/col][/row][/table] [size=18] [b]Notes[/b] [/size] Linux suppose que la moitié du buffer d'émission/réception est utilisé pour les structures internes du noyau. Ainsi les sysctls sont deux fois plus grand que ce que l'on peut observer directement sur le câble. [size=18] [b]Bugs[/b] [/size] Les options de socket [b]CONFIG_FILTER [/b] [b]SO_ATTACH_FILTER [/b] et [b]SO_DETACH_FILTER [/b] ne sont pas documentées. Pour les utiliser il est conseillé d'utiliser la bibliothèque libpcap. [size=18] [b]Versions[/b] [/size] [b]SO_BINDTODEVICE [/b] a été introduit dans Linux 2.0.30. [b]SO_PASSCRED [/b] est une nouveauté de Linux 2.2. Les sysctls sont nouveaux dans Linux 2.2. [size=18] [b]Auteurs[/b] [/size] Cette page de manuel a été écrire par Andi Kleen. [size=18] [b]Voir aussi[/b] [/size] [b]socket (2),[/b] [b]ip (7),[/b] [b]setsockopt (2),[/b] [b]getsockopt (2),[/b] [b]packet (7),[/b] [b]ddp (7) [/b] [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 2001-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?