socket_getpeername

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

socket_getpeernameЗапрашивает удалённую сторону указанного сокета, в результате может быть возвращен хост/порт или путь в файловой системе Unix, в зависимости от типа сокета

Описание

socket_getpeername ( resource $socket , string &$address [, int &$port ] ) : bool

Запрашивает удалённую сторону указанного сокета, в результате может быть возвращен хост/порт или путь в файловой системе Unix, в зависимости от типа сокета.

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

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

Если указан, то будет содержать порт, связанный с адресом address.

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. socket_getpeername() также может вернуть FALSE, если сокет имет тип отличный от AF_INET, AF_INET6 или AF_UNIX, в этом случае код последней ошибки сокета НЕ будет обновлен.

Примечания

Замечание:

socket_getpeername() не должна быть использована с сокетами AF_UNIX, созданными при помощи функции socket_accept(). Только сокеты, созданные при помощи socket_connect() или серверный сокет, к которому применён вызов функции socket_bind(), будут возвращать осмысленные значения.

Замечание:

Для того, чтобы socket_getpeername() вернула осмысленное значение, сокет, к которому она применяется, должен понимать концепцию "равных отношений" (peer).

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

  • socket_getsockname() - Запрашивает локальную сторону указанного сокета, в результате можно получить хост/порт или путь в файловой системе Unix, в зависимости от типа сокета
  • socket_last_error() - Возвращает последнюю ошибку на сокете
  • socket_strerror() - Возвращает строку, описывающую ошибку сокета

add a note add a note

User Contributed Notes 2 notes

up
7
redph0enix at hotmail dot com
16 years ago
socket_getpeername will not work for UDP sockets. Instead, use socket_recvfrom - it provides the IP address and port of the source server - eg:

$size=socket_recvfrom($socket,$input,65535,0,$ipaddress,$port);
echo "Received [$input] ($size bytes) from IP $ipaddress Port $port\n";
up
1
Anonymous
3 years ago
The reason it won't work for UDP is that UDP is stateless; logically there are no peers other than at the time a packet is sent or received. Or more strictly, a UDP socket can interact with 0..N peers.
To Top