getpeername - holt den Namen einer verbundenen Gegenstelle
Standard-C-Bibliothek (
libc,
-lc)
#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr *restrict Adr,
socklen_t *restrict adresslaenge);
getpeername() schreibt die Adresse der Gegenstelle, die mit dem Socket
sockfd verbunden ist, in den Puffer, auf den
Adr zeigt. Der
Parameter
adresslaenge sollte die Größe des freien
Speicherplatzes an der Adresse
Adr enthalten. Nach dem Aufruf
enthält
adresslaenge die Größe des
zurückgegebenen Namens (in Byte). Der Name wird abgeschnitten, wenn der
zur Verfügung gestellte Puffer zu klein ist.
Die zurückgegebene Adresse wird gekürzt, falls der bereitgestellte
Puffer zu klein ist. In diesem Fall gibt
adresslaenge einen Wert
zurück, der größer als der übergebene Wert ist.
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1
zurückgegeben und
errno gesetzt, um den Fehler anzuzeigen.
- EBADF
- Das Argument sockdd ist kein zulässiger
Dateideskriptor.
- EFAULT
- Das Argument Adr zeigt aus dem vom Prozess
adressierbaren Adressraum heraus.
- EINVAL
-
adresslaenge ist nicht zulässig (ist z. B.
negativ).
- ENOBUFS
- Es waren im System zu wenig Ressourcen für die
Ausführung dieses Vorgangs verfügbar.
- ENOTCONN
- Der Socket ist nicht verbunden.
- ENOTSOCK
- Der Dateideskriptor sockdd zeigt nicht auf ein
Socket.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (
getpeername() erschien
erstmals in 4.2BSD).
Für Hintergrundinformationen zum Typ
socklen_t siehe
accept(2).
Bei Datenstrom-Sockets kann, sobald
connect(2) aufgerufen wurde, jeder
der Sockets
getpeername() ausführen, um die Adresse des
Peer-Sockets zu ermitteln. Andererseits sind Datagramm-Sockets ohne
Verbindung. Der Aufruf von
connect(2) mit einem Datagramm-Socket setzt
vielmehr die Peer-Adresse für ausgehende Datagramme, die mit
write(2) oder
recv(2) gesendet wurden. Der Aufruf von
connect(2) kann
getpeername() nutzen, um die zuvor für
den Socket gesetzte Peer-Adresse zu ermitteln. Der Peer-Socket jedoch beachtet
diese Information nicht und der Aufruf von
getpeername() dort wird
keine verwertbare Information liefern, es sei denn,
connect(2) wurde
ebenfalls auf dem Peer aufgerufen. Beachten Sie auch, dass der
Empfänger eines Datagramms die Absenderadresse mittels
recvfrom(2) ermitteln kann.
accept(2),
bind(2),
getsockname(2),
ip(7),
socket(7),
unix(7)
Die deutsche Übersetzung dieser Handbuchseite wurde von Dennis Stampfer
<
[email protected]>, Dr. Tobias Quathamer <
[email protected]>
und Mario Blättermann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer