Files
doc-fr/reference/sockets/functions/socket-get-option.xml
2022-06-04 13:56:19 +01:00

564 lines
20 KiB
XML
Executable File

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0ff45f21e8633bccf996a1907bfe6d3d6f415f69 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.socket-get-option" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>socket_get_option</refname>
<refpurpose>Lit les options du socket</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>int</type><type>false</type></type><methodname>socket_get_option</methodname>
<methodparam><type>Socket</type><parameter>socket</parameter></methodparam>
<methodparam><type>int</type><parameter>level</parameter></methodparam>
<methodparam><type>int</type><parameter>option</parameter></methodparam>
</methodsynopsis>
<para>
<function>socket_get_option</function> récupère la valeur de l'option
spécifiée par le paramètre <parameter>option</parameter> pour le socket
spécifié par le paramètre <parameter>socket</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>socket</parameter></term>
<listitem>
<para>
Une instance de <classname>Socket</classname> créée par
<function>socket_create</function> ou <function>socket_accept</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>level</parameter></term>
<listitem>
<para>
Le paramètre <parameter>level</parameter> spécifie la couche de
protocole de l'option. Par exemple, pour connaître les options de
la couche socket, la valeur <constant>SOL_SOCKET</constant> du paramètre
<parameter>level</parameter> sera utilisée. Les autres degrés, comme
<constant>TCP</constant>, 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
<function>getprotobyname</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>option</parameter></term>
<listitem>
<table>
<title>Options disponibles pour les sockets</title>
<tgroup cols="3">
<thead>
<row>
<entry>Option</entry>
<entry>Description</entry>
<entry>Type</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>SO_DEBUG</constant></entry>
<entry>
Reporte si les informations de débogage sont enregistrées ou pas.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_BROADCAST</constant></entry>
<entry>
Reporte si la transmission des annonces globales est supportée ou pas.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_REUSEADDR</constant></entry>
<entry>
Indique si les adresses locales peuvent être réutilisées ou pas.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_REUSEPORT</constant></entry>
<entry>
Indique si les ports locaux peuvent être réutilisés.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_KEEPALIVE</constant></entry>
<entry>
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.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_LINGER</constant></entry>
<entry>
<para>
Reporte si le socket <parameter>socket</parameter> s'attarde sur
la fonction <function>socket_close</function> si des données sont
présentes ou pas. Par défaut, lorsque le socket est fermé,
<function>socket_close</function> tente d'envoyer toutes les
données qui ne l'ont pas encore été.
</para>
<para>
Si <varname>l_onoff</varname> ne vaut pas zéro et que
<varname>l_linger</varname> 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.
</para>
<para>
D'un autre côté, si <varname>l_onoff</varname> ne vaut pas zéro
et <varname>l_linger</varname> ne vaut pas zéro,
<function>socket_close</function> bloquera tant que les données
non envoyées ne le seront pas ou pendant le temps spécifié par
<varname>l_linger</varname>. Si le socket est non-bloquant,
<function>socket_close</function> échouera et retournera une
erreur.
</para>
</entry>
<entry>
<type>array</type>. Le tableau contiendra 2 clés :
<varname>l_onoff</varname> et
<varname>l_linger</varname>.
</entry>
</row>
<row>
<entry><constant>SO_OOBINLINE</constant></entry>
<entry>
Reporte si le socket <parameter>socket</parameter> part sur des données en
ligne out-of-band ou pas.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_SNDBUF</constant></entry>
<entry>
Reporte les informations sur la taille du tampon envoyé.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVBUF</constant></entry>
<entry>
Reporte les informations sur la taille du tampon reçu.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_ERROR</constant></entry>
<entry>
Reporte les informations sur le statut de l'erreur et le vide.
</entry>
<entry>
<type>int</type> (ne peut être défini par la fonction
<function>socket_set_option</function>)
</entry>
</row>
<row>
<entry><constant>SO_TYPE</constant></entry>
<entry>
Reporte le type de le socket <parameter>socket</parameter> (e.g.
<constant>SOCK_STREAM</constant>).
</entry>
<entry>
<type>int</type> (ne peut être défini par la fonction
<function>socket_set_option</function>)
</entry>
</row>
<row>
<entry><constant>SO_DONTROUTE</constant></entry>
<entry>
Reporte si les messages sortants dévient les équipements standard de cheminement.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVLOWAT</constant></entry>
<entry>
Reporte le nombre minimal d'octets au processus pour les opérations
entrantes sur le socket <parameter>socket</parameter>.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVTIMEO</constant></entry>
<entry>
Reporte la valeur du délai d'exécution pour les opérations entrantes.
</entry>
<entry>
<type>array</type>. Le tableau contiendra 2 clés :
<varname>sec</varname> qui est la partie représentant les secondes
de la valeur du délai d'attente et <varname>usec</varname> qui est
la partie représentant les microsecondes.
</entry>
</row>
<row>
<entry><constant>SO_SNDTIMEO</constant></entry>
<entry>
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é.
</entry>
<entry>
<type>array</type>. Le tableau contiendra 2 clés :
<varname>sec</varname>qui est la partie représentant les secondes
de la valeur du délai d'attente et <varname>usec</varname> qui est
la partie représentant les microsecondes.
</entry>
</row>
<row>
<entry><constant>SO_SNDLOWAT</constant></entry>
<entry>
Reporte le nombre minimal d'octets au processus pour les opérations
sortantes sur le socket <parameter>socket</parameter>.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_NODELAY</constant></entry>
<entry>
Indique si l'algorithme Nagle TCP est désactivé.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>MCAST_JOIN_GROUP</constant></entry>
<entry>
Joint un groupe multicast.
</entry>
<entry>
Un tableau avec une clé <literal>"group"</literal>,
spécifiant une &string; avec les adresses multicast IPv4 ou IPv6
et une clé <literal>"interface"</literal>, spécifiant soit un
numéro d'interface (de type <type>int</type>), soit une
&string; avec le nom de l'interface, comme
<literal>"eth0"</literal>.
<literal>0</literal> peut ê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 <function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_LEAVE_GROUP</constant></entry>
<entry>
Quitte un groupe multicast.
</entry>
<entry>
Un tableau. Voir la constante <constant>MCAST_JOIN_GROUP</constant>
pour plus d'informations (ne peut être utilisé qu'avec la fonction
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_BLOCK_SOURCE</constant></entry>
<entry>
Paquets de bloc arrivant depuis une source spécifique
vers un groupe multicast spécifique, qui aura du être joint
auparavant.
</entry>
<entry>
Un tableau contenant les mêmes clés que celles de la constante
<constant>MCAST_JOIN_GROUP</constant>, avec une clé supplémentaire
<literal>source</literal>, 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
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_UNBLOCK_SOURCE</constant></entry>
<entry>
Débloque (recommence à recevoir) les paquets arrivant depuis
une source spécifique vers un groupe multicast spécifique,
qui aura dû être joins auparavant.
</entry>
<entry>
Un tableau au même format que celui de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(ne peut être utilisé qu'avec la fonction
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_JOIN_SOURCE_GROUP</constant></entry>
<entry>
Reçoit des paquets destinés à un groupe multicast spécifique
dont l'adresse source correspond à une valeur spécifique.
</entry>
<entry>
Un tableau au même format que celui de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(ne peut être utilisé qu'avec la fonction
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_LEAVE_SOURCE_GROUP</constant></entry>
<entry>
Arrête de recevoir des paquets destinés à un groupe multicast
spécifique dont l'adresse source correspond à une valeur spécifique.
</entry>
<entry>
Un tableau au même format que celui de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(ne peut être utilisé qu'avec la fonction
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_IF</constant></entry>
<entry>
L'interface de sortie pour les paquets multicast IPv4.
</entry>
<entry>
Soit un entier spécifiant le numéro de l'interface, soit une
&string; représentant le nom de l'interface, par exemple,
<literal>eth0</literal>. La valeur <type>0</type>
peut être utilisé pour indiquer la table de routage à utiliser
dans la sélection de l'interface. La fonction
<function>socket_get_option</function> 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 constantes <constant>IP_MULTICAST_IF</constant> et
<constant>IPV6_MULTICAST_IF</constant>.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_IF</constant></entry>
<entry>
L'interface de sortie pour les paquets multicast IPv6.
</entry>
<entry>
Identique à la constante <constant>IP_MULTICAST_IF</constant>.
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_LOOP</constant></entry>
<entry>
La politique de la boucle locale multicast pour les paquets
IPv4, qui détermine si les paquets multicast envoyés par
ce socket doivent aussi atteindre les récepteurs du même hôte
qui ont joint le groupe multicast sur l'interface de sortie
utilisée par ce socket. C'est le comportement par défaut.
</entry>
<entry>
Un entier (soit <literal>0</literal>, soit <literal>1</literal>).
Pour la fonction <function>socket_set_option</function>,
n'importe quelle valeur sera acceptée et sera convertie
en un booléen suivant les règles habituelles de PHP.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_LOOP</constant></entry>
<entry>
Identique à la constante <constant>IP_MULTICAST_LOOP</constant>,
mais pour l'IPv6.
</entry>
<entry>
Un entier. Voir la constante <constant>IP_MULTICAST_LOOP</constant>.
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_TTL</constant></entry>
<entry>
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).
</entry>
<entry>
Un entier entre 0 et 255.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_HOPS</constant></entry>
<entry>
Identique à la constante <constant>IP_MULTICAST_TTL</constant>,
mais pour les paquets IPv6. La valeur -1 est également acceptée,
signifiant que la route par défaut doit être utilisée.
</entry>
<entry>
Un entier compris entre -1 et 255.
</entry>
</row>
<row>
<entry><constant>SO_MARK</constant></entry>
<entry>
Définit un identifiant sur le socket pour le but de filtrer
les packets sur Linux.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_ACCEPTFILTER</constant></entry>
<entry>
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).
</entry>
<entry>
<type>string</type> name of the filter (length 15 max).
</entry>
</row>
<row>
<entry><constant>SO_USER_COOKIE</constant></entry>
<entry>
Définit un identifiant sur le socket pour le but de filtrer
les packets sur FreeBSD.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_DONTTRUNC</constant></entry>
<entry>
Conserve les données non-lues.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_WANTMORE</constant></entry>
<entry>
Fournit un indice quand plus de données sont prêtes.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_DEFER_ACCEPT</constant></entry>
<entry>
Ne pas notifier un socket qui écoute tant que les données ne sont pas prêtes.
</entry>
<entry>
<type>int</type>
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retourne la valeur de l'option fournie, &return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&sockets.changelog.socket-param;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemple avec <function>socket_get_option</function></title>
<programlisting role="php">
<![CDATA[
<?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));
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>socket_create_listen</function></member>
<member><function>socket_set_option</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->