socket_get_option
(PHP 4 >= 4.3.0, PHP 5)
socket_get_option — Obtiene las opciones de socket para el socket
Descripción
La función socket_get_option() recupera el valor de
la opción especificada por el parámetro optname para el
socket especificado.
Parámetros
-
socket -
Un recurso socket válido creado con socket_create() o socket_accept().
-
level -
El parámetro
levelespecifica 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ámetroleveldeSOL_SOCKET. Se puden usar otros niveles comoTCPespecificando el número de protocolo de ese nivel. Los números de protocolo se pueden averiguar usando la función getprotobyname(). -
optname -
Opciones de Socket Disponibles Opción Descripción Tipo SO_DEBUGInforma si la información de depuración está siendo registrada. int SO_BROADCASTInforma si la transmisión de mensajes de emisión está soportada. int SO_REUSEADDRInforma si las direcciones locales pueden ser rechazadas. int SO_KEEPALIVEInforma 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_LINGERInforma si el
socketperdura en socket_close() si la información está presente. Por omisión, cuando el socket se cierra, se intenta enviar toda la información no enviada. En el caso de un socket orientado a conexión, socket_close() esperará a su par para admitir la información.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_OOBINLINEInforma si el socketdeja información fuera de banda en línea.int SO_SNDBUFInforma del tamaño del buffer de envío. int SO_RCVBUFInforma del tamaño del buffer de recepción. int SO_ERRORDa información sobre el estado de error y lo limpia. int (no puede ser establecido por la función socket_set_option()) SO_TYPEInforma del tipo socket(p.ej.SOCK_STREAM).int (no puede ser establecido mediante socket_set_option()) SO_DONTROUTEInforma si los mensajes salientes se desvían de los mecanismos de ruta estándar. int SO_RCVLOWATInforma del número mínimo de bytes a procesar para operaciones de entrada del socket.int SO_RCVTIMEOInforma 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_SNDTIMEOInforma 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_SNDLOWATInforma del número mínimo de bytes a procesar por operaciones de salida del socket.int TCP_NODELAYInforma si el algoritmo Nagle TCP está deshabilitado. int MCAST_JOIN_GROUPUnirse 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_GROUPAbandonar un grupo multidifusión. (añadido en PHP 5.4) array. Véase MCAST_JOIN_GROUPpara más información. (Sólo se puede usar en la función socket_set_option())MCAST_BLOCK_SOURCEBloquea 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_SOURCEDesbloquea (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_GROUPRecibir 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_GROUPDejar 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_IFLa 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_IFyIPV6_MULTICAST_IF.IPV6_MULTICAST_IFLa interfaz saliente para paquetes multidifusión IPv6. (añadido en PHP 5.4) El mismo que IP_MULTICAST_IF.IP_MULTICAST_LOOPLa 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_LOOPAnáloga a IP_MULTICAST_LOOP, pero para IPv6. (añadido en PHP 5.4)Un valor de tipo int. Véase IP_MULTICAST_LOOP.IP_MULTICAST_TTLEl 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_HOPSAná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.
Valores devueltos
Devuelve el valor de la opción dada, o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de socket_set_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));
?>