socket_set_option

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

socket_set_optionDefine opções para o soquete

Descrição

socket_set_option(
    Socket $socket,
    int $level,
    int $option,
    array|string|int $value
): bool

A função socket_set_option() define a opção especificada pelo parâmetro option, no nível do protocolo especificado em level, para o valor apontado por value no soquete informado em socket.

Parâmetros

socket

Uma instância de Socket criada com socket_create() ou socket_accept().

level

O parâmetro level especifica o nível de protocolo no qual a opção reside. Por exemplo, para definir opções no nível do soquete, um parâmetro level de SOL_SOCKET seria usado. Outros níveis, como TCP, podem ser usados ​​especificando o número do protocolo desse nível. Os números de protocolo podem ser encontrados usando a função getprotobyname().

option

As opções de soquete disponíveis são as mesmas da função socket_get_option().

value

O valor da opção.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro socket agora espera uma instância de Socket; anteriormente, um resource era esperado.

Exemplos

Example #1 Exemplo de socket_set_option()

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!is_resource($socket)) {
    echo 'Não foi possível criar o soquete: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo 'Não foi possível definir a opção no soquete: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_bind($socket, '127.0.0.1', 1223)) {
    echo 'Não foi possível vincular ao soquete: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

$rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);

if ($rval === false) {
    echo 'Não foi possível obter a opção do soquete: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if ($rval !== 0) {
    echo 'SO_REUSEADDR está definida no soquete !' . PHP_EOL;
}
?>

Veja Também