socket_getpeername

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

socket_getpeernamePregunta a la parte remota del socket dado que puede resultar en un host/puerto o en una ruta de sistema de archivos Unix, dependiendo de su tipo

Descripción

socket_getpeername(resource $socket, string &$address, int &$port = ?): bool

Pregunta a la parte remota del socket dado que puede resultar en un host/puerto o en una ruta de sistema de archivos Unix, dependiendo de su tipo.

Parámetros

socket

Un recurso socket válido creado con socket_create() o socket_accept().

address

Si el socket dado es de tipo AF_INET o AF_INET6, socket_getpeername() devolverá la dirección IP de los pares (remotos) en la notación apropiada (p.ej. 127.0.0.1 o fe80::1) en el parámetro address, y si el parámetro opcional port está presente, también el puerto asociado.

Si el socket dado es de tipo AF_UNIX, socket_getpeername() devolverá la ruta del sistema de archivos Unix (p.ej. /var/run/daemon.sock) en el parámetro address.

port

Si se da, contendrá el puerto asociado a address.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error. socket_getpeername() puede también devolver false si el tipo de socket no es ni AF_INET, AF_INET6, ni AF_UNIX, en cuyo caso no se actualiza el último código de error de socket.

Notas

Nota:

socket_getpeername() no debería usarse con sockets AF_UNIX creados con socket_accept(). Sólo los sockets creados con socket_connect() o un socket principal de servidor seguido de una llamada a socket_bind() devolverán valores con sentido.

Nota:

Para hacer que socket_getpeername() devuelva un valor con sentido, el socket sobre el que es aplicado debe ser, por supuesto, uno cuyo concepto de "par" tenga sentido.

Ver también

  • socket_getsockname() - Preguntar a la parte local del socket dado que puede resultar en un host/puerto o en una ruta de sistema de archivos Unix, dependiendo de su tipo
  • socket_last_error() - Devuelve el último error sobre un socket
  • socket_strerror() - Devuelve una cadena que describe un error de socket

add a note add a note

User Contributed Notes 2 notes

up
6
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
8 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