(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Lit les options du socket
   socket_get_option() récupère la valeur de l'option
   spécifiée par le paramètre option pour le socket
   spécifié par le paramètre socket.
  
socketUne instance de Socket créée par socket_create() ou socket_accept().
level
       Le paramètre level spécifie la couche de
       protocole de l'option. Par exemple, pour connaître les options de
       la couche socket, la valeur SOL_SOCKET du paramètre
       level sera utilisée. Les autres degrés, comme
       TCP, peuvent être utilisés en spécifiant le
       numéro du protocole de cette couche. Les numéros de protocoles
       peuvent être trouvés en utilisant la fonction
       getprotobyname().
      
option| Option | Description | Type | 
|---|---|---|
| SO_DEBUG | Reporte si les informations de débogage sont enregistrées ou pas. | int | 
| SO_BROADCAST | Reporte si la transmission des annonces globales est supportée ou pas. | int | 
| SO_REUSEADDR | Indique si les adresses locales peuvent être réutilisées ou pas. | int | 
| SO_REUSEPORT | Indique si les ports locaux peuvent être réutilisés. | int | 
| SO_KEEPALIVE | Reporte si les connexions sont persistantes avec des transmissions périodiques de messages ou pas. Si le socket connecté échoue en réponse à ces messages, la connexion est interrompue et le processus écrira sur ce socket une notification avec un signal SIGPIPE. | int | 
| SO_LINGER | 
            Reporte si le socket  Si l_onoff ne vaut pas zéro et que l_linger vaut zéro, toutes les données qui n'ont pas encore été envoyées seront annulées et RST (réinitialisation) sera envoyé dans le cas d'une connexion orientée socket. D'un autre côté, si l_onoff ne vaut pas zéro et l_linger ne vaut pas zéro, socket_close() bloquera tant que les données non envoyées ne le seront pas ou pendant le temps spécifié par l_linger. Si le socket est non-bloquant, socket_close() échouera et retournera une erreur. | array. Le tableau contiendra 2 clés : l_onoff et l_linger. | 
| SO_OOBINLINE | Reporte si le socket socketpart sur des données en
           ligne out-of-band ou pas. | int | 
| SO_SNDBUF | Reporte les informations sur la taille du tampon envoyé. | int | 
| SO_RCVBUF | Reporte les informations sur la taille du tampon reçu. | int | 
| SO_ERROR | Reporte les informations sur le statut de l'erreur et le vide. | int (ne peut être défini par la fonction socket_set_option()) | 
| SO_TYPE | Reporte le type de le socket socket(e.g.SOCK_STREAM). | int (ne peut être défini par la fonction socket_set_option()) | 
| SO_DONTROUTE | Reporte si les messages sortants dévient les équipements standard de cheminement. | int | 
| SO_RCVLOWAT | Reporte le nombre minimal d'octets au processus pour les opérations
           entrantes sur le socket socket. | int | 
| SO_RCVTIMEO | Reporte la valeur du délai d'exécution pour les opérations entrantes. | array. Le tableau contiendra 2 clés : sec qui est la partie représentant les secondes de la valeur du délai d'attente et usec qui est la partie représentant les microsecondes. | 
| SO_SNDTIMEO | Reporte la valeur du délai d'exécution spécifiant le temps maximal d'exécution pour les fonctions sortantes bloquantes parce que la commande d'écoulement empêche des données d'être envoyé. | array. Le tableau contiendra 2 clés : secqui est la partie représentant les secondes de la valeur du délai d'attente et usec qui est la partie représentant les microsecondes. | 
| SO_SNDLOWAT | Reporte le nombre minimal d'octets au processus pour les opérations
           sortantes sur le socket socket. | int | 
| TCP_NODELAY | Indique si l'algorithme Nagle TCP est désactivé. | int | 
| MCAST_JOIN_GROUP | Joint un groupe multicast. | Un tableau avec une clé "group",
           spécifiant une chaîne de caractères avec les adresses multicast IPv4 ou IPv6
           et une clé"interface", spécifiant soit un
           numéro d'interface (de type int), soit une
           chaîne de caractères avec le nom de l'interface, comme"eth0".0peut être spécfié pour indiquer que l'interface
           doit être sélectionné en utilisant les règles de routage (ne peut être
           utilisé qu'avec la fonction socket_set_option()). | 
| MCAST_LEAVE_GROUP | Quitte un groupe multicast. | Un tableau. Voir la constante MCAST_JOIN_GROUPpour plus d'informations (ne peut être utilisé qu'avec la fonction
           socket_set_option()). | 
| MCAST_BLOCK_SOURCE | Paquets de bloc arrivant depuis une source spécifique vers un groupe multicast spécifique, qui aura du être joint auparavant. | Un tableau contenant les mêmes clés que celles de la constante MCAST_JOIN_GROUP, avec une clé supplémentairesource, lié à une chaîne de caractère spécifiant
           une adresse IPv4 ou IPv6 de la source à bloquer
           (ne peut être utilisé qu'avec la fonction
           socket_set_option()). | 
| MCAST_UNBLOCK_SOURCE | Débloque (recommence à recevoir) les paquets arrivant depuis une source spécifique vers un groupe multicast spécifique, qui aura dû être joins auparavant. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE(ne peut être utilisé qu'avec la fonction
           socket_set_option()). | 
| MCAST_JOIN_SOURCE_GROUP | Reçoit des paquets destinés à un groupe multicast spécifique dont l'adresse source correspond à une valeur spécifique. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE(ne peut être utilisé qu'avec la fonction
           socket_set_option()). | 
| MCAST_LEAVE_SOURCE_GROUP | Arrête de recevoir des paquets destinés à un groupe multicast spécifique dont l'adresse source correspond à une valeur spécifique. | Un tableau au même format que celui de la constante MCAST_BLOCK_SOURCE(ne peut être utilisé qu'avec la fonction
           socket_set_option()). | 
| IP_MULTICAST_IF | L'interface de sortie pour les paquets multicast IPv4. | Soit un entier spécifiant le numéro de l'interface, soit une
           chaîne de caractères représentant le nom de l'interface, par exemple, eth0. La valeur 0
           peut être utilisé pour indiquer la table de routage à utiliser
           dans la sélection de l'interface. La fonction
           socket_get_option() retourne un index d'interface.
           Notez que, contrairement à l'API C, cette option ne prend pas
           comme argument une adresse IP. Ceci élimine la différence d'interface
           entre les constantesIP_MULTICAST_IFetIPV6_MULTICAST_IF. | 
| IPV6_MULTICAST_IF | L'interface de sortie pour les paquets multicast IPv6. | Identique à la constante IP_MULTICAST_IF. | 
| IP_MULTICAST_LOOP | La politique de la boucle locale multicast pour les paquets IPv4 active ou désactive le bouclage des multidiffusions sortantes, qui doivent avoir été jointes auparavant. L'effet diffère cependant selon qu'il s'applique à Unix ou à Windows, le premier étant sur le chemin de réception tandis que le second sur le chemin d'envoi. | Un entier (soit 0, soit1).
           Pour la fonction socket_set_option(),
           n'importe quelle valeur sera acceptée et sera convertie
           en un booléen suivant les règles habituelles de PHP. | 
| IPV6_MULTICAST_LOOP | Identique à la constante IP_MULTICAST_LOOP,
           mais pour l'IPv6. | Un entier. Voir la constante IP_MULTICAST_LOOP. | 
| IP_MULTICAST_TTL | La durée de vie des paquets sortants multicast IPv4. Ce doit être une valeur comprise entre 0 (ne pas quitter l'interface) et 255. Par défaut, la valeur est à 1 (seul le réseau local est atteint). | Un entier entre 0 et 255. | 
| IPV6_MULTICAST_HOPS | Identique à la constante IP_MULTICAST_TTL,
           mais pour les paquets IPv6. La valeur -1 est également acceptée,
           signifiant que la route par défaut doit être utilisée. | Un entier compris entre -1 et 255. | 
| SO_MARK | Définit un identifiant sur le socket pour le but de filtrer les packets sur Linux. | int | 
| SO_ACCEPTFILTER | Ajoute un filtre d'acceptation sur le socket écouté (FreeBSD/NetBSD). Un module kernel de filtre d'acceptation doit d'abord être chargé sur FreeBSD (e.g. accf_http). | string name of the filter (length 15 max). | 
| SO_USER_COOKIE | Définit un identifiant sur le socket pour le but de filtrer les packets sur FreeBSD. | int | 
| SO_RTABLE | Définit un identifiant sur le socket pour le but de filtrer les packets sur OpenBSD. | int | 
| SO_DONTTRUNC | Conserve les données non lues. | int | 
| SO_WANTMORE | Fournit un indice quand plus de données sont prêtes. | int | 
| TCP_DEFER_ACCEPT | Ne pas notifier un socket qui écoute tant que les données ne sont pas prêtes. | int | 
| SO_INCOMING_CPU | Récupère/Définit l'affinité du cpu pour un socket. | int | 
| SO_MEMINFO | Récupère toute les meminfo d'un socket. | int | 
| SO_BPF_EXTENSIONS | Récupère les extensions BPF supportées par le kernel à attacher à un socket. | int | 
| SO_SETFIB | Définit la table de route (FIB) d'un socket. (FreeBSD uniquement) | int | 
| SOL_FILTER | Filtres attribués à un socket. (Solaris/Illumos uniquement) | int | 
| TCP_KEEPCNT | Définit le nombre maximal de sondes keepalive TCP devrait envoyer avant de lâcher la connexion. | int | 
| TCP_KEEPIDLE | Définit le temps que la connexion doit rester inactive. | int | 
| TCP_KEEPINTVL | Définit le temps entre les sondes keepalive individuelles. | int | 
| TCP_KEEPALIVE | Définit le temps que la connexion doit rester inactive. (macOS uniquement) | int | 
| TCP_NOTSENT_LOWAT | Définit le nombre limite de données non envoyées dans la file d'attente d'écriture par le flux de socket. (Linux uniquement) | int | 
   Retourne la valeur de l'option fournie,  ou false si une erreur survient.
  
| Version | Description | 
|---|---|
| 8.0.0 | socketest désormais une instance de Socket ;
  auparavant, c'était une resource. | 
Exemple #1 Exemple avec 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));
?>