ÜBERSICHT
#include <sys/socket.h>int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
BESCHREIBUNG
getpeername() schreibt die Adresse der Gegenstelle, die mit dem Socket sockfd verbunden ist, in den Puffer, auf den addr zeigt. Der Parameter addrlen sollte die Größe des freien Speicherplatzes an der Adresse addr enthalten. Nach dem Aufruf enthält addrlen 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 addrlen einen Wert zurück, der größer als der übergebene Wert ist.
RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.FEHLER
- EBADF
- Das Argument sockfd ist kein zulässiger Dateideskriptor.
- EFAULT
- Das Argument addr zeigt aus dem vom Prozess adressierbaren Adressraum heraus.
- EINVAL
- addrlen 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 sockfd zeigt nicht auf ein Socket.
KONFORM ZU
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (getpeername() erschien erstmals in 4.2BSD).ANMERKUNGEN
Der dritte Parameter von getpeername() ist in Wirklichkeit ein int * (und dies ist in 4.x-BSD und libc4 sowie libc5 so umgesetzt). Einige Verwirrungen durch POSIX führten zum aktuellen socklen_t, das ebenfalls von Glibc verwendet wird. Siehe auch 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.
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
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 <[email protected]>.