If using Unix Sockets, and you want to use SO_PEERCRED, you can use the number 17 for the optname (and SOL_SOCKET for the level). The PID of the connecting process will be returned.
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 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
-
Opciones de Socket Disponibles 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_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 socket perdura 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_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 (cannot be set by 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 límite 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 límite 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
Valores devueltos
Devuelve el valor de la opción dada, o FALSE en caso de error.
Ejemplos
Example #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));
?>
Historial de cambios
| Versión | Descripción |
|---|---|
| 4.3.0 | Se cambió el nombre de esta función. Se solía llamar socket_getopt(). |
Just 2 notes here:
- On UNIX, If SO_DEBUG is set, the php program needs an effective user id of 0.
- activating SO_OOBINLINE on a socket is equivalent to passing MSG_OOB flag to each recieving functions used with that socket (eg: socket_recv, socket_recvfrom).
