socket_getpeername

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

socket_getpeername Pergunta ao lado remoto do socket dado qual deve ser o resultado em host/port ou no endereço UNIX filesystem, dependendo deste tipo.

Descrição

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

Esta função é EXPERIMENTAL. O comportamento, seu nome e documentação podem mudar sem aviso em futuras versões do PHP. Utilize por sua própria conta e risco.

Se o socket dado é do tipo AF_INET ou AF_INET6, socket_getpeername() irá retornar o peers (remote) IP address na notação apropriada (ex. 127.0.0.1 ou fe80::1) no parâmetro address e, se o parâmetro opcional port está presente, também o associa à porta.

Se o socket dado é do tipo AF_UNIX, socket_getpeername() irá retornar o endereço UNIX filesystem (ex. /var/run/daemon.sock) no parâmetro address.

Nota: socket_getpeername() não deve ser usado com sockets AF_UNIX criados com socket_accept(). Somente sockets criados com socket_connect() ou um socket de servidor primário seguindo uma chamada para socket_bind() irá retornar valores significativos.

Retorna true em caso de sucesso ou false em caso de falha. socket_getpeername() deve também retornar false se o tipo de socket não é algum destes AF_INET, AF_INET6, ou AF_UNIX, no caso o último código de erro do socket não é atualizado.

Veja também socket_getsockname(), socket_last_error() e socket_strerror().

add a note add a note

User Contributed Notes 2 notes

up
6
redph0enix at hotmail dot com
20 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