(PHP 4 >= 4.3.0, PHP 5, PHP 7)
socket_get_option — Obtiene las opciones de socket para el socket
La función socket_get_option() recupera el valor de
la opción especificada por el parámetro optname
para el
socket
especificado.
socket
Un recurso socket válido creado con socket_create() o socket_accept().
level
El parámetro level
especifica el nivel
de protcolo en el que reside la opción. Por ejemplo, para recuperar las opciones
al nivel de socket se usaría un parámetro level
de
SOL_SOCKET
. Se puden usar otros niveles como
TCP
especificando el número de protocolo de ese nivel.
Los números de protocolo se pueden averiguar usando la función
getprotobyname().
optname
Opción | Descripción | Tipo |
---|---|---|
SO_DEBUG |
Informa si la información de depuración está siendo registrada. | int |
SO_BROADCAST |
Informa si la transmisión de mensajes de emisión está soportada. | int |
SO_REUSEADDR |
Informa si las direcciones locales pueden ser rechazadas. | int |
SO_REUSEPORT |
Informa si los puertos locales pueden ser reutilizados. | int |
SO_KEEPALIVE |
Informa si las conexiones se mantienen activas con transmisiones periódicas de mensajes. Si el socket conectado falla al responder a estos mensajes, la conexión es interrumpida y los procesos que escriben en ese socket son notificados con una señal SIGPIPE. | int |
SO_LINGER |
Informa si el Si l_onoff no es cero y l_linger es cero, toda la información no enviada será desechada y se envía RST (reinicio) al par en el caso de un socker orientado a conexión. Por otro lado, si l_onoff no es cero y l_linger no es cero, socket_close() bloqueará hasta que toda la información sea enviada o transcurra el tiempo especificado en l_linger. Si el socket es de no-bloqueo, socket_close() fallará y devolverá un error. |
array. La matriz contendrá dos claves: l_onoff y l_linger. |
SO_OOBINLINE |
Informa si el socket deja información fuera de banda en línea.
|
int |
SO_SNDBUF |
Informa del tamaño del buffer de envío. | int |
SO_RCVBUF |
Informa del tamaño del buffer de recepción. | int |
SO_ERROR |
Da información sobre el estado de error y lo limpia. | int (no puede ser establecido por la función socket_set_option()) |
SO_TYPE |
Informa del tipo socket (p.ej.
SOCK_STREAM ).
|
int (no puede ser establecido mediante socket_set_option()) |
SO_DONTROUTE |
Informa si los mensajes salientes se desvían de los mecanismos de ruta estándar. | int |
SO_RCVLOWAT |
Informa del número mínimo de bytes a procesar para operaciones de entrada del
socket .
|
int |
SO_RCVTIMEO |
Informa del valor del tiempo de espera para operaciones de entrada. | array. La matriz contendrá dos claves: sec que es la parte de segundos del valor del tiempo límite y usec que es la parte de microsegundos del valor del tiempo límite. |
SO_SNDTIMEO |
Informa del valor del tiempo de espera especificando la cantidad de tiempo que una función de salida bloquea porque el control de flujo evita el envío de información. | array. La matriz contendrá dos claves: sec que es la parte de segundos del valor del tiempo límite y usec que es la parte de microsegundos del valor del tiempo límite. |
SO_SNDLOWAT |
Informa del número mínimo de bytes a procesar por operaciones de salida del socket .
|
int |
TCP_NODELAY |
Informa si el algoritmo Nagle TCP está deshabilitado. | int |
MCAST_JOIN_GROUP |
Unirse a un grupo multidifusión. (añadido en PHP 5.4) | Un array con claves "group", especificando un string con la dirección de la multidifusión IPv4 o IPv6 e "interface", especificando o un número de intefaz (de tipo int) o un string con el nombre de la interfaz, como "eth0". Se puede especificar 0 para indicar que la interfaz debería ser seleccionada usando las normas de enrutamiento. (Sólo se puede usar en la función socket_set_option()) |
MCAST_LEAVE_GROUP |
Abandonar un grupo multidifusión. (añadido en PHP 5.4) |
array. Véase MCAST_JOIN_GROUP para
más información. (Sólo se puede usar en
la función socket_set_option())
|
MCAST_BLOCK_SOURCE |
Bloquea los paquetes enviados desde un origen específico a un grupo multidifusión específico, al cual se ha tenido que unir previamente. (añadido en PHP 5.4) |
Un array con las mismas claves que en
MCAST_JOIN_GROUP , más una clave extra,
source, que hace referencia a un string
que especifica una dirección IPv4 o IPv6 del origen a ser bloqueado.
(Sólo se puede usar en la función socket_set_option())
|
MCAST_UNBLOCK_SOURCE |
Desbloquea (empieza a recibir de nuevo) paquetes enviados desde una dirección origen especificada a un grupo multidifusión especificado, al cual se ha tenido que unir previamente. (añadido en PHP 5.4) |
Un array con el mismo formato que
MCAST_BLOCK_SOURCE .
(Sólo se puede usar en la función socket_set_option())
|
MCAST_JOIN_SOURCE_GROUP |
Recibir paquetes destinados aun grupo multidifusión específico cuya dirección de origen coincide con un valor específico. (añadido en PHP 5.4) |
Un array con el mismo formato que
MCAST_BLOCK_SOURCE .
(Sólo se puede usar en la función socket_set_option())
|
MCAST_LEAVE_SOURCE_GROUP |
Dejar de recibir paquetes destinados a un grupo multidifusión específico cuya dirección de origen coincide con un valor específico. (añadido en PHP 5.4) |
Un array con el mismo formato que
MCAST_BLOCK_SOURCE .
(Sólo se puede usar en la función socket_set_option())
|
IP_MULTICAST_IF |
La interfaz saliente para paquetes multidifusión IPv4. (añadido en PHP 5.4) |
O un valor de tipo int especificando el número de la interfaz o un
string con el nombre de la interfaz, como
eth0. Se puede usar el valor 0 para
indicar que la tabla de enrutamiento se usa en la selección de la interfaz.
La función socket_get_option() devuelve un
índice de interfaz.
Observe que, a diferencia de la API de C, esta opción NO toma una dirección
IP. Esto elimina las diferencias de interfaz entre
IP_MULTICAST_IF y
IPV6_MULTICAST_IF .
|
IPV6_MULTICAST_IF |
La interfaz saliente para paquetes multidifusión IPv6. (añadido en PHP 5.4) |
El mismo que IP_MULTICAST_IF .
|
IP_MULTICAST_LOOP |
La política de loopback multidifusión para paquetes IPv4, la cual determina si los paquetes enviados por este socket también alcanzan los receptores del mismo host al que se ha unidoal mismo grupo multidifusión en la interfaz saliente usada por este socket. Este es el caso por omisión. (añadido en PHP 5.4) | Un valor de tipo int (0 ó 1). Para la función socket_set_option() será aceptado cualquier valor y será convertido a un booleano siguiendo la reglas habituales de PHP. |
IPV6_MULTICAST_LOOP |
Análoga aIP_MULTICAST_LOOP , pero para IPv6.
(añadido en PHP 5.4)
|
Un valor de tipo int. Véase IP_MULTICAST_LOOP .
|
IP_MULTICAST_TTL |
El tiemp de vida de los paquetes multidifusión IPv4 salientes. Debería ser un valor entre 0 (no abandonar la interfaz) y 255. El valor predeterminado es 1 (sólo se alcanza la red local). (añadido en PHP 5.4) | Un valor de tipo int entre 0 y 255. |
IPV6_MULTICAST_HOPS |
Análoga a IP_MULTICAST_TTL , pero para paquetes
IPv6. También se acepta el valor -1, lo que significa que debería usarse
la ruta predeterminada.
(añadido en PHP 5.4)
|
Un valor de tipo int entre -1 y 255. |
Devuelve el valor de la opción dada, o FALSE
en caso de error.
Ejemplo #1 Ejemplo 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));
?>