PHP Conference Japan 2024

socket_getsockname

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_getsockname Fragt das lokale Ende eines gegebenen Sockets ab. Das Ergebnis ist vom Typ abhängig und ist entweder das Paar host/port oder ein Pfad des Unix-Dateisystems

Beschreibung

socket_getsockname(Socket $socket, string &$address, int &$port = null): bool

Hinweis: socket_getpeername() sollte nicht mit AF_UNIX-Sockets verwendet werden, die mit socket_connect() erzeugt wurden. Nur Sockets, die mit socket_accept() erzeugt wurden oder primäre Server-Sockets, nach einem Aufruf von socket_bind(), geben brauchbare Ergebnisse zurück.

Parameter-Liste

socket

Eine Socket-Instanz, die mit socket_create() oder socket_accept() erzeugt wurde.

address

Falls der angegebene Socket vom Typ AF_INET oder AF_INET6 ist, gibt socket_getsockname() die IP-Addresse des lokalen Rechners im Parameter address in Punktnotation zurück (z. B. 127.0.0.1 oder fe80::1). Falls der optionale Parameter port angegeben ist, wird der zugehörige Port ebenfalls zurückgegeben.

Falls der angegebene Socket vom Typ AF_UNIX ist, gibt socket_getsockname() den Pfad des Unix-Dateisystems (z. B. /var/run/daemon.sock) im Parameter address zurück.

port

Falls angegeben, wird hier der mit address verknüpfte Port zurückgegeben.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben. socket_getsockname() kann auch false zurückgeben, wenn der Socket weder vom Typ AF_INET noch vom Typ AF_INET6 oder AF_UNIX ist. In diesem Fall wird der letzte Socket-Fehlercode nicht aktualisiert.

Changelog

Version Beschreibung
8.0.0 socket ist nun eine Socket-Instanz; vorher war es eine resource.

Siehe auch

add a note

User Contributed Notes 1 note

up
1
CXJ
10 years ago
Curiously, getsockname() works for socket_create() and socket_create_pair() Unix-domain (AF_UNIX) sockets if one calls socket_bind() after creation to name the formerly anonymous socket(s).

Using a socket_bind() call also results in a file system "file" (socket, first character 's' in an "ls -l" listing) being created with the given name. Such a "file" will need to be removed explicitly, as closing the socket will not remove it.
To Top