socket_bind

(PHP 4 >= 4.1.0, PHP 5)

socket_bindPassa um nome para o socket

Descrição

bool socket_bind ( resource $socket , string $address [, 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.

socket_bind() passa o nome dado em address para o socket descrito por socket, que deve ser um resource socket válido criado com .

O parâmetro address é qualquer endereço IP na notação "dotted-quad" (ex. 127.0.0.1), se o socket é da família AF_INET; ou o pathname de um Unix-domain socket, se o socket é da família AF_UNIX.

O parâmetro port é somente usado quando estiver conectando com um socket AF_INET, e determina a porta no host remoto para o qual a conexão deve ser feita.

Retorna TRUE em caso de sucesso ou FALSE em falhas. O código de erro pode ser retornado com . Esse código deve ser passado para para pegar uma explicação textual do erro. Note que é reportado para retornar um código de erro inválido no caso de você estar tentando passar um socket para um endereço errado que não pertence à sua máquina Windows 9x/ME.

Veja também , , , e .

User Contributed Notes

php50613160534 dot 3 dot korkman at spamgourmet dot org
Use 0 for port to bind a random (free) port for incoming connections:

socket_bind ($socket, $bind_address, 0);
socket_getsockname($socket, $socket_address, $socket_port);
socket_listen($socket);
...

$socket_port contains the assigned port, you might want to send it to a remote client connecting. Tested with php 5.03.
gasket at cekkent dot net
The aforementioned tidbit about using NULL to bind to all addresses did not work for me, as I would receive an error about unknown address. Using a 0 worked for me:

socket_bind ($socket, 0, $port)

This also allows you to receive UDP broadcasts, which is what I had been trying to figure out.
keksov[at]gmx.de
If you want to reuse address and port, and get rid of error: unable to bind, address already in use, you have to use socket_setopt (check actual spelling for this function in you PHP verison) before calling bind:

<?php
if (!socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo
socket_strerror(socket_last_error($sock));
    exit;
}
?>

This solution was found by
Christophe Dirac. Thank you Christophe!