PHP Conference Nagoya 2025

socket_getsockname

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

socket_getsocknameЗапрашивает локальную сторону указанного сокета, в результате можно получить хост/порт или путь в файловой системе Unix, в зависимости от типа сокета

Описание

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

Замечание: Функция socket_getsockname() не должна использоваться с сокетами AF_UNIX, созданными при помощи функции socket_connect(). Только сокеты, созданные функцией socket_accept() и первичные серверные сокеты после вызова socket_bind(), позволяют получить осмысленный ответ при вызове этой функции.

Список параметров

socket

Экземпляр Socket, созданный функцией socket_create() или socket_accept().

address

Если заданный сокет имеет тип AF_INET или AF_INET6, socket_getpeername() вернёт локальный IP-адрес в соответствующем формате ( например, 127.0.0.1 или fe80::1) в параметре address и, если необязательный параметр port присутствует, также связанный порт.

Если заданный сокет имеет тип AF_UNIX, socket_getpeername() вернёт путь в файловой системе Unix (т.е. /var/run/daemon.sock) в параметр address.

port

Если указан, то будет содержать соответствующий порт.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка. socket_getsockname() может также возвращать false, если тип сокета не является одним из AF_INET, AF_INET6, или AF_UNIX, в этом случае код последней ошибки сокета не обновляется.

Список изменений

Версия Описание
8.0.0 Теперь параметр socket ожидает экземпляр класса Socket; раньше параметр ожидал ресурс (resource).

Смотрите также

  • socket_getpeername() - Опрашивает удалённую сторону сокета
  • socket_last_error() - Возвращает последнюю ошибку сокета
  • socket_strerror() - Возвращает строку, описывающую ошибку сокета

Добавить

Примечания пользователей 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