socket_getsockname

(PHP 4 >= 4.1.0, PHP 5)

socket_getsockname Pergunta o lado local dado do socket no qual deve retornar resultados no host/port ou no endereço UNIX filesystem, dependendo do tipo.

Descrição

bool socket_getsockname ( resource $socket , string $&addr [, int $&port ] )
Aviso

Esta função é EXPERIMENTAL. O comportamento desta função, seu nome, incluindo toda documentação pode ser modificado sem aviso em futuras versões do PHP. Esta função deve ser usada por sua própria conta e risco.

Se o socket dado é do tipo AF_INET ou AF_INET6, socket_getsockname() irá retornar o endereço IP local 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 associa-o à porta.

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

Nota: socket_getsockname() não deve ser usado com sockets AF_UNIX criados com socket_connect(). Somente sockets criados com socket_accept() ou sockets de servidores primários seguidos de uma chamada para socket_bind() irão retornar valores significativos.

Retorna TRUE em caso de sucesso ou FALSE em caso de falha. socket_getsockname() 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_getpeername(), socket_last_error() e socket_strerror().

add a note add a note

User Contributed Notes 2 notes

up
0
CXJ
2 months 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.
up
-2
not at valid dot com
7 years ago
Just a quick note:
I found socket_getsockname() is not IPv6 compatible or may just return some unexpected results?

<?php
Simple Code Example
:

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
   
socket_bind($socket,'0.0.0.0',150);

socket_getsockname($socket, $IP, $PORT);

print
$IP.":".$PORT."\n";

?>

This does not print $IP 127.0.0.1 or 192.168.1.1 or even 0.0.0.0 ... etc ... like you would expect ... in my case I receive 10.0.0.0 witch is not a valid port on my system using IPv5 and IPv6! Thus you should rely on using the initial values of socket_bind() to get the local address.

Hope this helps...
To Top