<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.sockets.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.socket-create.php',
    1 => 'socket_create',
    2 => 'Cr&eacute;e un socket',
  ),
  'up' => 
  array (
    0 => 'ref.sockets.php',
    1 => 'Fonctions sur les sockets',
  ),
  'prev' => 
  array (
    0 => 'function.socket-connect.php',
    1 => 'socket_connect',
  ),
  'next' => 
  array (
    0 => 'function.socket-create-listen.php',
    1 => 'socket_create_listen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/sockets/functions/socket-create.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.socket-create" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">socket_create</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.1.0, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">socket_create</span> &mdash; <span class="dc-title">Crée un socket</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.socket-create-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>socket_create</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$domain</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$type</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$protocol</code></span>): <span class="type"><span class="type"><a href="class.socket.php" class="type Socket">Socket</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>socket_create()</strong></span> crée un point de communication 
   (une socket) et retourne une instance de <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>
   Une connexion typique réseau est composée de deux sockets :
   une qui joue le rôle de client et l&#039;autre celui du serveur.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.socket-create-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <p class="para">
       Le paramètre <code class="parameter">domain</code> spécifie la famille
       de protocoles à utiliser par le socket.
      </p>
      <table class="doctable table">
       <caption><strong>Famille d&#039;adresses / protocoles disponibles</strong></caption>
       
        <thead>
         <tr>
          <th>Domaine</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong></td>
          <td>
           Protocole basé sur IPv4. TCP et UDP sont les protocoles communs
           de cette famille de protocoles.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           Protocole basé sur IPv6. TCP et UDP sont les protocoles communs
           de cette famille de protocoles.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Famille de protocoles locales de communication. Son rendement
           élevé et ses faibles coûts supplémentaires en font une
           excellente forme d&#039;IPC (Interprocess Communication).
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">type</code></dt>
     <dd>
      <p class="para">
       Le paramètre <code class="parameter">type</code> sélectionne le type de
       communication à utiliser par le socket.
      </p>
      <table class="doctable table">
       <caption><strong>Types de sockets disponibles</strong></caption>
       
        <thead>
         <tr>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong></td>
          <td>
           Fournit des flux d&#039;octets séquentiels, fiables, full-duplex
           et basés sur la connexion. Un mécanisme de transmission des données
           &quot;<code class="literal">out-of-band</code>&quot; peut être supporté.
           Le protocole TCP est basé sur ce type de sockets.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Support des datagrammes (sans connexion, messages non fiables
           d&#039;une longueur maximum fixe). Le protocole UDP est basé sur ce
           type de sockets.
          </td>
         </tr>

           <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
          <td>
           Fournit un chemin de transmission de données séquentiel, fiable,
           bidirectionnel et basé sur la connexion pour les datagrammes de
           longueur maximale fixe ; un consommateur est requis pour lire la
           totalité d&#039;un paquet avec chaque appel à la lecture.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Fournit l&#039;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).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Fournit une couche fiable de datagramme qui ne garantit pas
           l&#039;ordre des données. Ce type de socket est le plus susceptible
           de ne pas être implémenté sur le système d&#039;exploitation.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">protocol</code></dt>
     <dd>
      <p class="para">
       Le paramètre <code class="parameter">protocol</code> définit le protocole
       spécifique pour le domaine <code class="parameter">domain</code> à utiliser
       lors de communications sur un socket retourné. La valeur appropriée
       peut être retrouvée par son nom en utilisant la fonction
       <span class="function"><a href="function.getprotobyname.php" class="function">getprotobyname()</a></span>. Si le protocole désiré est TCP
       ou UDP, les constantes correspondantes <strong><code><a href="sockets.constants.php#constant.sol-tcp">SOL_TCP</a></code></strong>
       et <strong><code><a href="sockets.constants.php#constant.sol-udp">SOL_UDP</a></code></strong> peuvent être utilisées.
      </p>
      <table class="doctable table">
       <caption><strong>Protocoles Communs</strong></caption>
       
        <thead>
         <tr>
          <th>Nom</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>icmp</td>
          <td>
           Le protocole ICMP (<code class="literal">Internet Control Message
            Protocol</code>) est utilisé tout d&#039;abord par les
           passerelles et les hôtes pour reporter les erreurs dans
           des communications de datagramme. La commande
           &quot;<code class="literal">ping</code>&quot; (présente dans les systèmes
           de production modernes) est un exemple d&#039;application
           utilisant le protocole ICMP.
          </td>
         </tr>

         <tr>
          <td>udp</td>
          <td>
           Le protocole UDP (<code class="literal">User Datagram Protocol</code>)
           est un protocole sans connexion, non fiable, avec des longueurs
           d&#039;enregistrement fixes. De ce fait, <code class="literal">UDP</code>
           requiert une quantité minimum de surcharge protocolaire.
          </td>
         </tr>

         <tr>
          <td>tcp</td>
          <td>
           Le protocole TCP (<code class="literal">Transmission Control Protocol</code>)
           est un protocole fiable, basé sur la connexion, orienté flux et
           full-duplex. <code class="literal">TCP</code> garantit que chaque paquet est
           reçu dans l&#039;ordre dans lequel il a été envoyé. Si quelques paquets
           sont perdus pendant la communication, <code class="literal">TCP</code>
           retransmettra ces paquets tant que l&#039;hôte destinataire ne les aura
           pas reçus entièrement. Pour des raisons de fiabilité et de
           performance, l&#039;implémentation <code class="literal">TCP</code>, elle-même,
           décide des frontières appropriées d&#039;octets de la couche fondamentale
           de communication du datagramme. Par conséquent, les applications
           <code class="literal">TCP</code> doivent autoriser la possibilité de
           transmission partielle d&#039;enregistrements.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.socket-create-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   <span class="function"><strong>socket_create()</strong></span> retourne une instance de
   <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span> en cas de succès et <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> sinon.
   Le code d&#039;erreur généré peut être obtenu en appelant la fonction
   <span class="function"><a href="function.socket-last-error.php" class="function">socket_last_error()</a></span>. Ce code d&#039;erreur
   peut être passé à la fonction <span class="function"><a href="function.socket-strerror.php" class="function">socket_strerror()</a></span>
   pour obtenir un message d&#039;erreur humainement lisible.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.socket-create-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <p class="para">
   Si une valeur invalide est spécifiée au paramètre <code class="parameter">domain</code> ou
   au paramètre <code class="parameter">type</code>, la fonction <span class="function"><strong>socket_create()</strong></span>
   prendra comme paramètres par défaut respectivement <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong> et
   <strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong> et générera un message d&#039;alerte
   (<strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>).
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.socket-create-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       En cas de succès, cette fonction retourne désormais une instance de
       <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span> ; auparavant, une <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>
       était retournée.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.socket-create-seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.socket-accept.php" class="function" rel="rdfs-seeAlso">socket_accept()</a> - Accepte une connexion sur un socket</span></li>
    <li><span class="function"><a href="function.socket-bind.php" class="function" rel="rdfs-seeAlso">socket_bind()</a> - Lie un nom &agrave; un socket</span></li>
    <li><span class="function"><a href="function.socket-connect.php" class="function" rel="rdfs-seeAlso">socket_connect()</a> - Cr&eacute;e une connexion sur un socket</span></li>
    <li><span class="function"><a href="function.socket-listen.php" class="function" rel="rdfs-seeAlso">socket_listen()</a> - Attend une connexion sur un socket</span></li>
    <li><span class="function"><a href="function.socket-last-error.php" class="function" rel="rdfs-seeAlso">socket_last_error()</a> - Lit la derni&egrave;re erreur g&eacute;n&eacute;r&eacute;e par un socket</span></li>
    <li><span class="function"><a href="function.socket-strerror.php" class="function" rel="rdfs-seeAlso">socket_strerror()</a> - Retourne une cha&icirc;ne d&eacute;crivant un message d'erreur</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>