getpeername - Obtenir le nom d'un correspondant connecté sur une socket
Bibliothèque C standard (
libc,
-lc)
#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict addrlen);
La fonction
getpeername() renvoie l'adresse du correspondant
connecté sur la socket
sockfd, dans le tampon pointé par
addr. Le paramètre
addrlen doit être
initialisé pour indiquer la taille de la zone pointée par
addr. En retour, il contiendra la longueur effective (en octets) du nom
retourné. Le nom est tronqué si le tampon est trop petit.
L'adresse renvoyée est tronquée si le tampon fourni est trop
petit ; dans ce cas,
addrlen renverra une valeur
supérieure à celle fournie lors de l'appel.
En cas de succès, zéro est renvoyé. En cas d'erreur,
-1 est renvoyé et
errno est définie pour
préciser l'erreur.
- EBADF
-
sockfd n'est pas un descripteur de fichier
valable.
- EFAULT
- Le paramètre addr pointe en dehors de
l'espace d'adressage accessible.
- EINVAL
-
addrlen n'est pas valable (négatif, par
exemple).
- ENOBUFS
- Les ressources système disponibles sont
insuffisantes.
- ENOTCONN
- La socket n'est pas connectée.
- ENOTSOCK
- Le descripteur de fichier sockfd ne fait pas
référence à un socket.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (
getpeername() est apparue pour
la première fois dans 4.2BSD).
Pour plus de détails sur le type
socklen_t, voir
accept(2).
Pour les sockets flux, une fois que
connect(2) a été
réalisé, chaque socket peut appeler
getpeername() pour
obtenir l'adresse de la socket correspondante. D'un autre côté,
les sockets datagramme sont sans connexion. Appeler
connect(2) sur une
socket datagramme définit simplement l'adresse correspondante pour les
datagrammes sortants envoyés avec
write(2) ou
recv(2).
L'appelant de
connect(2) peut utiliser
getpeername() pour
obtenir l'adresse correspondante qui est définie plus tôt pour
la socket. Cependant, la socket correspondante ne connaît pas ces
renseignements et appeler
getpeername() sur la socket correspondante ne
renverra aucun renseignement utile (sauf si un appel
connect(2) est
aussi exécuté sur la correspondante). Remarquez aussi que le
destinataire d'un datagramme peut obtenir l'adresse de l'expéditeur en
utilisant
recvfrom(2).
accept(2),
bind(2),
getsockname(2),
ip(7),
socket(7),
unix(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Philippe MENGUAL <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]