Files
doc-fr/reference/sockets/functions/socket-create.xml
2021-06-12 07:27:28 +01:00

292 lines
10 KiB
XML
Executable File

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a871ef72edf436c59422dedd538594db2541d5f1 Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="function.socket-create" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>socket_create</refname>
<refpurpose>Crée un socket</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>Socket</type><type>false</type></type><methodname>socket_create</methodname>
<methodparam><type>int</type><parameter>domain</parameter></methodparam>
<methodparam><type>int</type><parameter>type</parameter></methodparam>
<methodparam><type>int</type><parameter>protocol</parameter></methodparam>
</methodsynopsis>
<para>
<function>socket_create</function> crée un point de communication
(une socket) et retourne une instance de <classname>Socket</classname>
Une connexion typique réseau est composée de deux sockets :
une qui joue le rôle de client et l'autre celui du serveur.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>domain</parameter></term>
<listitem>
<para>
Le paramètre <parameter>domain</parameter> spécifie la famille
de protocoles à utiliser par le socket.
</para>
<table>
<title>Famille d'adresses / protocoles disponibles</title>
<tgroup cols="2">
<thead>
<row>
<entry>Domaine</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>AF_INET</constant></entry>
<entry>
Protocole basé sur IPv4. TCP et UDP sont les protocoles communs
de cette famille de protocoles.
</entry>
</row>
<row>
<entry><constant>AF_INET6</constant></entry>
<entry>
Protocole basé sur IPv6. TCP et UDP sont les protocoles communs
de cette famille de protocoles.
Le support a été ajouté en PHP 5.0.0.
</entry>
</row>
<row>
<entry><constant>AF_UNIX</constant></entry>
<entry>
Famille de protocoles locales de communication. Le rendement
élevé et des moindres coûts supplémentaires lui font une
grande force d'IPC (<literal>Interprocess Communication</literal>).
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>type</parameter></term>
<listitem>
<para>
Le paramètre <parameter>type</parameter> sélectionne le type de
communication à utiliser par le socket.
</para>
<table>
<title>Types de sockets disponibles</title>
<tgroup cols="2">
<thead>
<row>
<entry>Type</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>SOCK_STREAM</constant></entry>
<entry>
Fournit des flux d'octets ordonnancés, fiables, full-duplex,
raccordés sur la base. Un mécanisme de transmission des données
"<literal>out-of-band</literal>" peut être supporté.
Le protocole TCP est basé sur ce type de sockets.
</entry>
</row>
<row>
<entry><constant>SOCK_DGRAM</constant></entry>
<entry>
Support des datagrammes (moins de connexion, message non garanti
d'une longueur maximum fixe). Le protocole UDP est basé sur ce
type de sockets.
</entry>
</row>
<row>
<entry><constant>SOCK_SEQPACKET</constant></entry>
<entry>
Fournit un chemin de transmission de données séquentiel, fiable,
connecté à la base par deux chemins pour les datagrammes de
longueur maximale fixe ; un consommateur est requis pour lire la
totalité d'un paquet avec chaque appel à la lecture.
</entry>
</row>
<row>
<entry><constant>SOCK_RAW</constant></entry>
<entry>
Fournit l'accès brut de protocole de réseau. Ce type spécial de
socket peut être utilisé pour construire manuellement tout type
de protocole. Une utilisation commune de ce type de sockets
est le traitement des requêtes ICMP (comme le ping).
</entry>
</row>
<row>
<entry><constant>SOCK_RDM</constant></entry>
<entry>
Fournit une couche fiable de datagramme qui ne garantit pas
l'ordre des données. Ce type de socket est le plus susceptible
de ne pas être implémenté sur votre système d'exploitation.
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>protocol</parameter></term>
<listitem>
<para>
Le paramètre <parameter>protocol</parameter> définit le protocole
spécifique pour le domaine <parameter>domain</parameter> à utiliser
lors de communications sur un socket retourné. La valeur appropriée
peut être retrouvée par son nom en utilisant la fonction
<function>getprotobyname</function>. Si le protocole désiré est TCP
ou UDP, les constantes correspondantes <constant>SOL_TCP</constant>
et <constant>SOL_UDP</constant> peuvent être utilisées.
</para>
<table>
<title>Protocoles Communs</title>
<tgroup cols="2">
<thead>
<row>
<entry>Nom</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>icmp</literal></entry>
<entry>
Le protocole ICMP (<literal>Internet Control Message
Protocol</literal>) est utilisé tout d'abord par les
passerelles et les hôtes pour reporter les erreurs dans
des communications de datagramme. La commande
"<literal>ping</literal>" (présente dans les systèmes
de production modernes) est un exemple d'application
utilisant le protocole ICMP.
</entry>
</row>
<row>
<entry><literal>udp</literal></entry>
<entry>
Le protocole UDP (<literal>User Datagramm Protocol</literal>)
est un protocole sans connexion, incertain avec les longueurs
d'enregistrements fixes. De ce fait, <literal>UDP</literal>
requiert une quantité minimum de protocole aérienne.
</entry>
</row>
<row>
<entry><literal>tcp</literal></entry>
<entry>
Le protocole TCP (<literal>Transmission Control Protocol</literal>)
est un protocole fiable, connecté sur la base, orienté flux et
full-duplex. <literal>TCP</literal> garantit que chaque paquet est
reçu dans l'ordre dans lequel il a été envoyé. Si quelques paquets
sont perdus pendant la communication, <literal>TCP</literal>
retransmettra ces paquets tant que l'hôte destinataire ne les aura
pas reçu entièrement. Pour des raisons de fiabilité et de
performance, l'implémentation <literal>TCP</literal>, elle-même,
décide des frontières appropriées d'octets de la couche fondamentale
de communication du datagramme. Par conséquent, les applications
<literal>TCP</literal> doivent autoriser la possibilité de
transmission partielle d'enregistrements.
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>socket_create</function> retourne une instance de
<classname>Socket</classname> en cas de succès et &false; sinon.
Le code d'erreur généré peut être obtenu en appelant la fonction
<function>socket_last_error</function>. Ce code d'erreur
peut être passé à la fonction <function>socket_strerror</function>
pour obtenir un message d'erreur humainement lisible.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Si une valeur invalide est spécifiée au paramètre <parameter>domain</parameter> ou
au paramètre <parameter>type</parameter>, la fonction <function>socket_create</function>
prendra comme paramètres par défaut respectivement <constant>AF_INET</constant> et
<constant>SOCK_STREAM</constant> et générera un message d'alerte
(<constant>E_WARNING</constant>).
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
En cas de succès, cette fonction retourne désormais une instance de
<classname>Socket</classname> ; auparavant, une <type>resource</type>
était retournée.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>socket_accept</function></member>
<member><function>socket_bind</function></member>
<member><function>socket_connect</function></member>
<member><function>socket_listen</function></member>
<member><function>socket_last_error</function></member>
<member><function>socket_strerror</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
-->