<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.socket-create.php',
    1 => 'socket_create',
    2 => 'Crea un socket',
  ),
  'up' => 
  array (
    0 => 'ref.sockets.php',
    1 => 'Funciones de Socket',
  ),
  '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' => 'es',
    '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">Crea un socket</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.socket-create-description">
  <h3 class="title">Descripción</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> crea un punto de comunicación
   (un socket) y devuelve una instancia de <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>
   Una conexión típica de red está compuesta por dos sockets:
   uno que actúa como cliente y otro como servidor.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.socket-create-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <p class="para">
       El argumento <code class="parameter">domain</code> especifica la familia
       de protocolos a utilizar por el socket.
      </p>
      <table class="doctable table">
       <caption><strong>Familia de direcciones / protocolos disponibles</strong></caption>
       
        <thead>
         <tr>
          <th>Dominio</th>
          <th>Descripción</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>
           Protocolo basado en IPv4. TCP y UDP son los protocolos comunes
           de esta familia de protocolos.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           Protocolo basado en IPv6. TCP y UDP son los protocolos comunes
           de esta familia de protocolos.
           El soporte fue añadido en PHP 5.0.0.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Familia de protocolos de comunicación local. El alto rendimiento
           y los menores costos adicionales lo hacen una gran fuerza de IPC
           (<code class="literal">Interprocess Communication</code>).
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">type</code></dt>
     <dd>
      <p class="para">
       El argumento <code class="parameter">type</code> selecciona el tipo de
       comunicación a utilizar por el socket.
      </p>
      <table class="doctable table">
       <caption><strong>Tipos de sockets disponibles</strong></caption>
       
        <thead>
         <tr>
          <th>Tipo</th>
          <th>Descripción</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>
           Proporciona flujos de bytes ordenados, fiables, full-duplex,
           conectados en base. Un mecanismo de transmisión de datos
           &quot;<code class="literal">out-of-band</code>&quot; puede ser soportado.
           El protocolo TCP se basa en este tipo de sockets.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Soporte para datagramas (menos conexión, mensaje no garantizado
           de longitud máxima fija). El protocolo UDP se basa en este
           tipo de sockets.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
          <td>
           Proporciona un camino de transmisión de datos secuencial, fiable,
           conectado en base por dos caminos para los datagramas de
           longitud máxima fija; un consumidor es requerido para leer
           la totalidad de un paquete con cada llamada a la lectura.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Proporciona acceso bruto de protocolo de red. Este tipo especial de
           socket puede ser utilizado para construir manualmente cualquier tipo
           de protocolo. Un uso común de este tipo de sockets es el procesamiento
           de las peticiones ICMP (como el ping).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Proporciona una capa fiable de datagrama que no garantiza
           el orden de los datos. Este tipo de socket es el más probable
           de no estar implementado en su sistema operativo.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">protocol</code></dt>
     <dd>
      <p class="para">
       El argumento <code class="parameter">protocol</code> define el protocolo
       específico para el dominio <code class="parameter">domain</code> a utilizar
       durante las comunicaciones en un socket devuelto. El valor apropiado
       puede ser encontrado por su nombre utilizando la función
       <span class="function"><a href="function.getprotobyname.php" class="function">getprotobyname()</a></span>. Si el protocolo deseado es TCP
       o UDP, las constantes correspondientes <strong><code><a href="sockets.constants.php#constant.sol-tcp">SOL_TCP</a></code></strong>
       y <strong><code><a href="sockets.constants.php#constant.sol-udp">SOL_UDP</a></code></strong> pueden ser utilizadas.
      </p>
      <table class="doctable table">
       <caption><strong>Protocoles Comunes</strong></caption>
       
        <thead>
         <tr>
          <th>Nombre</th>
          <th>Descripción</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><code class="literal">icmp</code></td>
          <td>
           El protocolo ICMP (<code class="literal">Internet Control Message
            Protocol</code>) es utilizado primero por las
           pasarelas y los hosts para reportar errores en
           comunicaciones de datagrama. El comando
           &quot;<code class="literal">ping</code>&quot; (presente en los sistemas
           modernos) es un ejemplo de aplicación
           utilizando el protocolo ICMP.
          </td>
         </tr>

         <tr>
          <td><code class="literal">udp</code></td>
          <td>
           El protocolo UDP (<code class="literal">User Datagramm Protocol</code>)
           es un protocolo sin conexión, incierto con longitudes
           de registros fijas. Por lo tanto, <code class="literal">UDP</code>
           requiere una cantidad mínima de protocolo aéreo.
          </td>
         </tr>

         <tr>
          <td><code class="literal">tcp</code></td>
          <td>
           El protocolo TCP (<code class="literal">Transmission Control Protocol</code>)
           es un protocolo fiable, conectado en base, orientado a flujo y
           full-duplex. <code class="literal">TCP</code> garantiza que cada paquete es
           recibido en el orden en que fue enviado. Si algunos paquetes
           se pierden durante la comunicación, <code class="literal">TCP</code>
           retransmitirá estos paquetes hasta que el host destinatario
           los haya recibido completamente. Por razones de fiabilidad y
           rendimiento, la implementación <code class="literal">TCP</code>, ella misma,
           decide las fronteras apropiadas de bytes de la capa fundamental
           de comunicación del datagrama. Por lo tanto, las aplicaciones
           <code class="literal">TCP</code> deben permitir la posibilidad de
           transmisión parcial de registros.
          </td>
         </tr>

        </tbody>
       
      </table>

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


 <div class="refsect1 returnvalues" id="refsect1-function.socket-create-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   <span class="function"><strong>socket_create()</strong></span> devuelve una instancia de
   <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span> en caso de éxito y <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> en caso contrario.
   El código de error generado puede ser obtenido llamando a la función
   <span class="function"><a href="function.socket-last-error.php" class="function">socket_last_error()</a></span>. Este código de error
   puede ser pasado a la función <span class="function"><a href="function.socket-strerror.php" class="function">socket_strerror()</a></span>
   para obtener un mensaje de error legible por humanos.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.socket-create-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="para">
   Si un valor inválido es especificado en el argumento <code class="parameter">domain</code> o
   en el argumento <code class="parameter">type</code>, la función <span class="function"><strong>socket_create()</strong></span>
   tomará como argumentos por defecto respectivamente <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong> y
   <strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong> y generará un mensaje de advertencia
   (<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">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       En caso de éxito, esta función devuelve ahora una instancia de
       <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>; anteriormente, se devolvía un <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.socket-create-seealso">
  <h3 class="title">Ver también</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> - Acepta una conexi&oacute;n en un socket</span></li>
    <li><span class="function"><a href="function.socket-bind.php" class="function" rel="rdfs-seeAlso">socket_bind()</a> - Asocia un nombre a un socket</span></li>
    <li><span class="function"><a href="function.socket-connect.php" class="function" rel="rdfs-seeAlso">socket_connect()</a> - Crea una conexi&oacute;n en un socket</span></li>
    <li><span class="function"><a href="function.socket-listen.php" class="function" rel="rdfs-seeAlso">socket_listen()</a> - Espera una conexi&oacute;n en un socket</span></li>
    <li><span class="function"><a href="function.socket-last-error.php" class="function" rel="rdfs-seeAlso">socket_last_error()</a> - Lee el &uacute;ltimo error generado por un socket</span></li>
    <li><span class="function"><a href="function.socket-strerror.php" class="function" rel="rdfs-seeAlso">socket_strerror()</a> - Devuelve un string describiendo un mensaje de error</span></li>
   </ul>
  </p>
 </div>


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