PHP 8.5.0 Alpha 1 available for testing

socket_getpeername

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

socket_getpeernameInterroga el otro extremo de la comunicación

Descripción

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

Interroga el otro extremo de la comunicación.

Parámetros

socket

Una instancia de Socket creada por socket_create() o socket_accept().

address

Si el socket socket es de tipo AF_INET o AF_INET6, socket_getpeername() devolverá la dirección IP del host, en notación numérica (por ejemplo, 127.0.0.1 o fe80::1) en el parámetro address, y si el parámetro opcional port está presente, también devolverá el puerto de la comunicación establecida.

Si el socket socket es de tipo AF_UNIX, socket_getpeername() devolverá la ruta en el sistema de archivos (por ejemplo, /var/run/daemon.sock) en el parámetro address.

port

Si se proporciona, este debe ser el puerto asociado a la dirección del parámetro address.

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error. socket_getpeername() también puede devolver false si el tipo del socket no es ni AF_INET, AF_INET6 ni AF_UNIX, en cuyo caso el último código de error del socket no se modifica.

Historial de cambios

Versión Descripción
8.0.0 socket ahora es una instancia de Socket ; anteriormente, era un resource.

Notas

Nota:

socket_getsockname() no debe usarse con los sockets AF_UNIX creados con socket_accept(). Solo los sockets creados con socket_connect() o un socket servidor primario tras una llamada a socket_bind() devolverán valores lógicos.

Nota:

Para que la función socket_getpeername() devuelva un valor coherente, el socket sobre el que se llama a la función debe ser evidentemente uno para el que el concepto de "peer" tiene sentido.

Ver también

add a note

User Contributed Notes 2 notes

up
3
redph0enix at hotmail dot com
21 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
2
Anonymous
9 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