socket_get_option
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Obtém opções para o soquete
Descrição
A função socket_get_option() recupera o valor para
a opção especificado pelo parâmetro option
para
o soquete informado no parâmetro 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 recuperar opções no nível do soquete, um parâmetrolevel
com valorSOL_SOCKET
seria usado. Outros níveis, comoTCP
, podem ser usados especificando o número do protocolo para aquele nível. Números de protocolo podem ser encontrados usando a função getprotobyname(). option
-
Opções de Soquete Disponíveis Opção Descrição Tipo SO_DEBUG
Reporta se a informação de depuração está sendo gravada. int SO_BROADCAST
Reporta se a transmissão de mensagens de difusão é suportada. int SO_REUSEADDR
Reporta se os endereços locais podem ser reutilizados. int SO_REUSEPORT
Reporta se as portas locais podem ser reutilizadas. int SO_KEEPALIVE
Reporta se as conexões são mantidas ativas com transmissão periódicas de mensagens. Se o soquete conectado falhar em responder a essas mensagens, a conexão é quebrada e os processos escrevendo nesse soquete são notificados com um sinal SIGPIPE. int SO_LINGER
Informa se o soquete especificado em
socket
permanece em socket_close() se houver dados presentes. Por padrão, quando o soquete é fechado, ele tenta enviar todos os dados não enviados. No caso de um soquete orientado a conexão, socket_close() aguardará que seu par reconheça os dados.Se l_onoff for diferente de zero e l_linger for zero, todos os dados não enviados serão descartados e o RST (redefinição) será enviado ao par no caso de um soquete orientado a conexão.
Por outro lado, se l_onoff for diferente de zero e l_linger for diferente de zero, socket_close() irá bloquear até que todos os dados sejam enviados ou que tenha passado o tempo especificado em l_linger. Se o soquete for não bloqueante, socket_close() falhará e retornará um erro.
array. O array conterá duas chaves: l_onoff e l_linger. SO_OOBINLINE
Reporta se o socket
mantém os dados fora-de-banda em linha.int SO_SNDBUF
Reporta o tamanho do buffer de envio. int SO_RCVBUF
Reporta o tamanho do buffer de recebimento. int SO_ERROR
Relata informações sobre o status do erro e o limpa. int (não pode ser definido por socket_set_option()) SO_TYPE
Reporta o tipo do socket
(ex.:SOCK_STREAM
).int (não pode ser definido por socket_set_option()) SO_DONTROUTE
Informa se as mensagens de saída ignoram os recursos de roteamento padrão. int SO_RCVLOWAT
Informa o número mínimo de bytes a serem processados para operações de entrada de socket
.int SO_RCVTIMEO
Informa o valor do tempo limite para operações de entrada. array. O array conterá duas chaves: sec que é a parte dos segundos no valor do tempo limite e usec que é a parte dos microssegundos do valor do tempo limite. SO_SNDTIMEO
Informa o valor do tempo limite especificando a quantidade de tempo que uma função de saída bloqueia porque o controle de fluxo impede o envio de dados. array. O array conterá duas chaves: sec que é a parte dos segundos no valor do tempo limite e usec que é a parte dos microssegundos do valor do tempo limite. SO_SNDLOWAT
Informa o número mínimo de bytes a serem processados para operações de saída do socket
.int TCP_NODELAY
Informa se o algoritmo Nagle TCP está desabilitado. int MCAST_JOIN_GROUP
Ingressa em um grupo "multicast". array com chaves "group"
, especificando uma string com um endereço "multicast" IPv4 ou IPv6 e"interface"
, especificando um número de interface (tipo int) ou umastring
com o nome da interface, como"eth0"
.0
pode ser especificado para indicar que a interface deve ser selecionada usando regras de roteamento. (só pode ser usada em socket_set_option())MCAST_LEAVE_GROUP
Sai de um grupo "multicast". array. Veja MCAST_JOIN_GROUP
para mais informação. (só pode ser usada em socket_set_option())MCAST_BLOCK_SOURCE
Bloqueia pacotes que chegam de uma origem específica para um grupo "multicast" específico, no qual deve-se ter ingressado previamente. array com as mesmas chaves de MCAST_JOIN_GROUP
, mais uma chave extra,source
, que mapeia a uma string especificando um endereço IPv4 ou IPv6 da origem a ser bloqueada. (só pode ser usada em socket_set_option())MCAST_UNBLOCK_SOURCE
Desbloqueia (volta a receber) pacotes que chegam de um endereço de origem específico para um grupo "multicast" específico, no qual deve-se ter ingressado previamente. array com o mesmo formato de MCAST_BLOCK_SOURCE
. (só pode ser usada em socket_set_option())MCAST_JOIN_SOURCE_GROUP
Recebe pacotes destinados a um grupo "multicast" específico cujo endereço de origem corresponde a um valor específico. array com o mesmo formato de MCAST_BLOCK_SOURCE
. (só pode ser usada em socket_set_option())MCAST_LEAVE_SOURCE_GROUP
Para de receber pacotes destinados a um grupo "multicast" específico cujo endereço de origem corresponde a um valor específico. array com o mesmo formato de MCAST_BLOCK_SOURCE
. (só pode ser usada em socket_set_option())IP_MULTICAST_IF
A interface de saída para pacotes "multicast" IPv4. Pode ser um int especificando o número da interface ou uma string com um nome de interface, como eth0
. O valor 0 pode ser usado para indicar a tabela de roteamento a ser usada na seleção da interface. A função socket_get_option() retorna um índice de interface. Observe que, diferentemente da API C, esta opção NÃO utiliza um endereço IP. Isto elimina a diferença de interface entreIP_MULTICAST_IF
eIPV6_MULTICAST_IF
.IPV6_MULTICAST_IF
A interface de saída para pacotes "multicast" IPv6. O mesmo que IP_MULTICAST_IF
.IP_MULTICAST_LOOP
A política de "loopback multicast" para pacotes IPv4 habilita ou desabilita o "loopback" de "multicasts" de saída, que devem ter sido previamente ingressados. O efeito difere, entretanto, se for aplicado em unixes ou Windows, o primeiro está no caminho de recepção enquanto o último está no caminho de envio. int (pode ser 0
ou1
). Para socket_set_option(), qualquer valor será aceito e será convertido para um booleano seguindo as regras normais do PHP.IPV6_MULTICAST_LOOP
Análoga a IP_MULTICAST_LOOP
, porém para IPv6.int. Veja IP_MULTICAST_LOOP
.IP_MULTICAST_TTL
O tempo de vida dos pacotes de saída IPv4 "multicast". Deve ser um valor entre 0 (não sair da interface) e 255. O padrão é 1 (apenas a rede local é alcançada). int entre 0 e 255. IPV6_MULTICAST_HOPS
Análoga a IP_MULTICAST_TTL
, porém para pacotes IPv6. O valor -1 também é aceito e significa que a rota padrão deve ser usada.int entre -1 e 255. SO_MARK
Define um identificador no soquete com o objetivo de filtrar pacotes no Linux. int SO_ACCEPTFILTER
Adicionar um filtro de aceitação no soquete sendo escutado (FreeBSD/NetBSD). Um módulo de kernel de filtro de aceitação precisa ser carregado antecipadamente no FreeBSD (ex.: accf_http). string. Nome do filtro (comprimento máximo de 15). SO_USER_COOKIE
Define um identificador no soquete com o objetivo de filtrar pacotes no FreeBSD. int SO_RTABLE
Define um identificador no soquete com o objetivo de filtrar pacotes no OpenBSD. int SO_DONTTRUNC
Retém dados não lidos. int SO_WANTMORE
Fornece uma dica de quando mais dados estão prontos. int TCP_DEFER_ACCEPT
Não notifica um soquete que estiver escutando até que os dados estejam prontos. int SO_INCOMING_CPU
Obtém/define a afinidade de CPU de um soquete. int SO_MEMINFO
Obtém todas as informações de memória de um soquete. int SO_BPF_EXTENSIONS
Obtém as extensões BPF suportadas pelo kernel para anexar a um soquete. int SO_SETFIB
Define a tabela de rotas (FIB) de um soquete. (Somente FreeBSD) int SOL_FILTER
Filtros atribuídos a um soquete. (Somente Solaris/Illumos) int TCP_KEEPCNT
Define o número máximo de sondas de manutenção de atividade que o TCP deve enviar antes de interromper a conexão. int TCP_KEEPIDLE
Define o tempo que a conexão precisa permanecer ociosa. int TCP_KEEPINTVL
Define o tempo entre sondagens de manutenção de atividade individuais. int TCP_KEEPALIVE
Define o tempo que a conexão precisa permanecer ociosa. (somente macOS) int TCP_NOTSENT_LOWAT
Define o número limite de dados não enviados na fila de escrita pelo fluxo de soquete. (somente Linux) int
Valor Retornado
Retorna o valor da opção informada, 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_get_option()
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>
Veja Também
- socket_create_listen() - Abre um soquete em uma porta para aceitar conexões
- socket_set_option() - Define opções para o soquete