(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Lee las opciones del socket
socket_get_option() recupera el valor de la opción
especificada por el argumento option para el socket
especificado por el argumento socket.
socketUna instancia de Socket creada por socket_create() o socket_accept().
level
El argumento level especifica la capa de
protocolo de la opción. Por ejemplo, para conocer las opciones de
la capa socket, el valor SOL_SOCKET del argumento
level será utilizado. Otros niveles, como
TCP, pueden ser utilizados especificando el
número del protocolo de esta capa. Los números de protocolos
pueden ser encontrados utilizando la función
getprotobyname().
option| Opción | Descripción | Tipo |
|---|---|---|
SO_DEBUG |
Reporta si las informaciones de depuración son registradas o no. | int |
SO_BROADCAST |
Reporta si la transmisión de anuncios globales es soportada o no. | int |
SO_REUSEADDR |
Indica si las direcciones locales pueden ser reutilizadas o no. | int |
SO_REUSEPORT |
Indica si los puertos locales pueden ser reutilizados. | int |
SO_KEEPALIVE |
Reporta si las conexiones son persistentes con transmisiones periódicas de mensajes o no. Si el socket conectado falla en respuesta a estos mensajes, la conexión es interrumpida y el proceso escribirá sobre este socket una notificación con un señal SIGPIPE. | int |
SO_LINGER |
Reporta si el socket Si l_onoff no vale cero y que l_linger vale cero, todos los datos que no han sido enviados aún serán cancelados y RST (reinicialización) será enviado en el caso de una conexión orientada socket. Por otro lado, si l_onoff no vale cero y l_linger no vale cero, socket_close() bloqueará hasta que los datos no enviados sean enviados o durante el tiempo especificado por l_linger. Si el socket es no-bloqueante, socket_close() fallará y retornará un error. |
array. El array contendrá 2 claves : l_onoff y l_linger. |
SO_OOBINLINE |
Reporta si el socket socket parte sobre datos en
línea out-of-band o no.
|
int |
SO_SNDBUF |
Reporta las informaciones sobre el tamaño del buffer enviado. | int |
SO_RCVBUF |
Reporta las informaciones sobre el tamaño del buffer recibido. | int |
SO_ERROR |
Reporta las informaciones sobre el estado de error y lo vacía. | int (no puede ser definido por la función socket_set_option()) |
SO_TYPE |
Reporta el tipo del socket socket (ej.
SOCK_STREAM).
|
int (no puede ser definido por la función socket_set_option()) |
SO_DONTROUTE |
Reporta si los mensajes salientes desvían los equipos estándar de encaminamiento. | int |
SO_RCVLOWAT |
Reporta el número mínimo de octetos al proceso para las operaciones
entrantes sobre el socket socket.
|
int |
SO_RCVTIMEO |
Reporta el valor del tiempo límite para las operaciones entrantes. | array. El array contendrá 2 claves : sec que es la parte representando los segundos del valor del tiempo de espera y usec que es la parte representando los microsegundos. |
SO_SNDTIMEO |
Reporta el valor del tiempo límite especificando el tiempo máximo de ejecución para las funciones salientes bloqueantes porque el comando de flujo impide que los datos sean enviados. | array. El array contendrá 2 claves : sec que es la parte representando los segundos del valor del tiempo de espera y usec que es la parte representando los microsegundos. |
SO_SNDLOWAT |
Reporta el número mínimo de octetos al proceso para las operaciones
salientes sobre el socket socket.
|
int |
TCP_NODELAY |
Indica si el algoritmo Nagle TCP está desactivado. | int |
MCAST_JOIN_GROUP |
Se une a un grupo multicast. |
Un array con una clave "group",
especificando un string con las direcciones multicast IPv4 o IPv6
y una clave "interface", especificando ya sea un
número de interfaz (de tipo int), ya sea un
string con el nombre de la interfaz, como
"eth0".
0 puede ser especificado para indicar que la interfaz
debe ser seleccionada utilizando las reglas de encaminamiento (no puede ser
utilizado más que con la función socket_set_option()).
|
MCAST_LEAVE_GROUP |
Abandona un grupo multicast. |
Un array. Ver la constante MCAST_JOIN_GROUP
para más informaciones (no puede ser utilizado más que con la función
socket_set_option()).
|
MCAST_BLOCK_SOURCE |
Bloquea paquetes llegando desde una fuente específica hacia un grupo multicast específico, que habrá debido ser unido anteriormente. |
Un array conteniendo las mismas claves que las de la constante
MCAST_JOIN_GROUP, con una clave adicional
source, ligado a un string especificando
una dirección IPv4 o IPv6 de la fuente a bloquear
(no puede ser utilizado más que con la función
socket_set_option()).
|
MCAST_UNBLOCK_SOURCE |
Desbloquea (recomienza a recibir) los paquetes llegando desde una fuente específica hacia un grupo multicast específico, que habrá debido ser unido anteriormente. |
Un array en el mismo formato que el de la constante
MCAST_BLOCK_SOURCE
(no puede ser utilizado más que con la función
socket_set_option()).
|
MCAST_JOIN_SOURCE_GROUP |
Recibe paquetes destinados a un grupo multicast específico cuya dirección fuente corresponde a un valor específico. |
Un array en el mismo formato que el de la constante
MCAST_BLOCK_SOURCE
(no puede ser utilizado más que con la función
socket_set_option()).
|
MCAST_LEAVE_SOURCE_GROUP |
Deja de recibir paquetes destinados a un grupo multicast específico cuya dirección fuente corresponde a un valor específico. |
Un array en el mismo formato que el de la constante
MCAST_BLOCK_SOURCE
(no puede ser utilizado más que con la función
socket_set_option()).
|
IP_MULTICAST_IF |
La interfaz de salida para los paquetes multicast IPv4. |
Ya sea un entero especificando el número de la interfaz, ya sea un
string representando el nombre de la interfaz, por ejemplo,
eth0. El valor 0
puede ser utilizado para indicar la tabla de encaminamiento a utilizar
en la selección de la interfaz. La función
socket_get_option() retorna un índice de interfaz.
Note que, a diferencia de la API C, esta opción no toma
como argumento una dirección IP. Esto elimina la diferencia de interfaz
entre las constantes IP_MULTICAST_IF y
IPV6_MULTICAST_IF.
|
IPV6_MULTICAST_IF |
La interfaz de salida para los paquetes multicast IPv6. |
Idéntico a la constante IP_MULTICAST_IF.
|
IP_MULTICAST_LOOP |
La política de la bucla local multicast para los paquetes IPv4 activa o desactiva el buclaje de las multidifusiones salientes, que deben haber sido unidas anteriormente. El efecto difiere sin embargo según que se aplique a Unix o a Windows, el primero siendo sobre el camino de recepción mientras que el segundo sobre el camino de envío. |
Un entero (ya sea 0, ya sea 1).
Para la función socket_set_option(),
cualquier valor será aceptado y será convertido
en un booleano siguiendo las reglas habituales de PHP.
|
IPV6_MULTICAST_LOOP |
Idéntico a la constante IP_MULTICAST_LOOP,
pero para el IPv6.
|
Un entero. Ver la constante IP_MULTICAST_LOOP.
|
IP_MULTICAST_TTL |
La duración de vida de los paquetes salientes multicast IPv4. Esto debe ser un valor comprendido entre 0 (no salir de la interfaz) y 255. Por omisión, el valor es a 1 (solo la red local es alcanzada). | Un entero entre 0 y 255. |
IPV6_MULTICAST_HOPS |
Idéntico a la constante IP_MULTICAST_TTL,
pero para los paquetes IPv6. El valor -1 es igualmente aceptado,
significando que la ruta por omisión debe ser utilizada.
|
Un entero comprendido entre -1 y 255. |
SO_MARK |
Define un identificador sobre el socket para el propósito de filtrar los paquetes sobre Linux. | int |
SO_ACCEPTFILTER |
Añade un filtro de aceptación sobre el socket escuchado (FreeBSD/NetBSD). Un módulo kernel de filtro de aceptación debe ser cargado primero sobre FreeBSD (ej. accf_http). | string nombre del filtro (longitud 15 max). |
SO_USER_COOKIE |
Define un identificador sobre el socket para el propósito de filtrar los paquetes sobre FreeBSD. | int |
SO_RTABLE |
Define un identificador sobre el socket para el propósito de filtrar los paquetes sobre OpenBSD. | int |
SO_DONTTRUNC |
Conserva los datos no leídos. | int |
SO_WANTMORE |
Proporciona un índice cuando más datos están listos. | int |
TCP_DEFER_ACCEPT |
No notificar un socket que escucha hasta que los datos no estén listos. | int |
SO_INCOMING_CPU |
Recupera/Define la afinidad del cpu para un socket. | int |
SO_MEMINFO |
Recupera toda la meminfo de un socket. | int |
SO_BPF_EXTENSIONS |
Recupera las extensiones BPF soportadas por el kernel para adjuntar a un socket. | int |
SO_SETFIB |
Define la tabla de encaminamiento (FIB) de un socket. (FreeBSD solamente) | int |
SOL_FILTER |
Filtros atribuidos a un socket. (Solaris/Illumos solamente) | int |
TCP_KEEPCNT |
Define el número máximo de sondas keepalive TCP debería enviar antes de soltar la conexión. | int |
TCP_KEEPIDLE |
Define el tiempo que la conexión debe permanecer inactiva. | int |
TCP_KEEPINTVL |
Define el tiempo entre las sondas keepalive individuales. | int |
TCP_KEEPALIVE |
Define el tiempo que la conexión debe permanecer inactiva. (macOS solamente) | int |
TCP_NOTSENT_LOWAT |
Define el número límite de datos no enviados en la cola de escritura por el flujo de socket. (Linux solamente) | int |
Retorna el valor de la opción proporcionada, o false si ocurre un error.
| Versión | Descripción |
|---|---|
| 8.0.0 |
socket ahora es una instancia de Socket ;
anteriormente, era un resource.
|
Ejemplo #1 Ejemplo con 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));
?>