NOM¶
getsockopt, setsockopt - Lire et écrire les options d'une socket
SYNOPSIS¶
#include <sys/types.h> /* Consultez NOTES */
#include <sys/socket.h>
int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
DESCRIPTION¶
getsockopt() et
setsockopt() manipulent les options associées
à la socket à laquelle fait référence le descripteur de
fichier
sockfd. Ces options peuvent exister aux divers niveaux de
protocole, et sont toujours présentes au niveau socket le plus
élevé.
Quand on manipule une option d'une socket, il faut préciser le niveau
où elle s'applique, et le nom de l'option. Au niveau de l'API des
sockets,
level prend la valeur
SOL_SOCKET. Pour tous les autres
niveaux, il faut fournir le numéro de protocole approprié. Par
exemple, pour une option interprétée par le protocole
TCP,
level prendra le numéro du protocole
TCP. Consultez
getprotoent(3).
Les paramètres
optval et
optlen sont utilisés pour
déterminer les options pour
setsockopt(). Pour
getsockopt
ils identifient un tampon dans lequel la valeur de l'option désirée
doit être renvoyée. Pour
getsockopt,
optlen est un
paramètre résultat, contenant initialement la taille du tampon
pointé par
optval, et rempli en retour pour indiquer la taille
effective des valeurs renvoyées. Si aucune option n'est fournie ou
renvoyée,
optval peut être NULL.
optname et toute autre option sont passés sans interprétation
au protocole approprié, pour qu'il l'interprète lui‐même.
Le fichier d'en‐tête
<sys/socket.h> contient les
définitions pour le niveau socket. Les options pour les autres niveaux de
protocole peuvent varier tant en format qu'en nom, consultez les pages de
manuel de la section 7 pour plus d'informations.
La plupart des options au niveau socket utilisent un paramètre de type
int pour
optval. Pour
setsockopt(), un paramètre non
nul valide une option booléenne, et zéro l'invalide.
Pour une description des options disponibles consultez
socket(7) et les
pages correspondant au protocole concerné.
VALEUR RENVOYÉE¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il
renvoie -1 et remplit
errno en conséquence.
ERREURS¶
- EBADF
- sockfd n'est pas un descripteur valable.
- EFAULT
- optval pointe en dehors de l'espace d'adressage
accessible. Avec getsockopt(), ceci peut s'appliquer également
à optlen.
- EINVAL
- optlen non valable pour setsockopt(). Dans
certains cas cette erreur peut aussi se produire pour une valeur non
valable de optval (par exemple, pour l'option
IP_ADD_MEMBERSHIP décrite dans ip(7)).
- ENOPROTOOPT
- L'option est inconnue pour ce protocole.
- ENOTSOCK
- Le paramètre sockfd est un fichier, pas une
socket.
SVr4, BSD 4.4 (ces appels système sont apparus dans BSD 4.2),
POSIX.1-2001.
NOTES¶
POSIX.1-2001 ne requiert pas l'inclusion de
<sys/types.h>, et cet
en‐tê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.
Le paramètre
optlen de
getsockopt() et
setsockopt()
est en fait un
int [*] (et c'est ce qu'utilisent BSD 4.x, libc4 et
libc5). Une certaine confusion POSIX a donné le
socklen_t actuel,
également utilisé par glibc. Pour plus de détails consultez
accept(2).
BOGUES¶
Plusieurs options sur les sockets devraient être gérées à un
niveau plus bas par le système.
VOIR AUSSI¶
ioctl(2),
socket(2),
getprotoent(3),
protocols(5),
socket(7),
tcp(7),
unix(7)
COLOPHON¶
Cette page fait partie de la publication 3.44 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> ».