<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'function.socket-create.php',
    1 => 'socket_create',
    2 => 'Cria um soquete (ponto de extremidade para comuni&ccedil;&atilde;o)',
  ),
  'up' => 
  array (
    0 => 'ref.sockets.php',
    1 => 'Fun&ccedil;&otilde;es 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' => 'pt_BR',
    '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">Cria um soquete (ponto de extremidade para comunição)</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.socket-create-description">
  <h3 class="title">Descrição</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">
   Cria e retorna uma instância de <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>, também referenciado como um ponto de extremidade
   de comunicação. Uma conexão típica de rede é construída com 2 soquetes, um
   fazendo o papel do cliente, e outro fazendo o papel do 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">
       O parâmetro <code class="parameter">domain</code> (domínio) especifica a família de
       protocolo a ser usada pelo soquete.
      </p>
      <table class="doctable table">
       <caption><strong>Famílias de endereços/protocolos disponíveis</strong></caption>
       
        <thead>
         <tr>
          <th>Domínio</th>
          <th>Descrição</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>
           Protocolos baseados em Internet IPv4. TCP e UDP são protocolos comuns
           desta família.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           Protocolos baseados em Internet IPv6. TCP e UDP são protocolos comuns
           desta família.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Família de protocolos de comunicação local. Alta eficiência e pouca
           sobrecarga fazem dela uma ótima forma de IPC (Comunicação Entre Processos, da sigla em inglês).
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">type</code></dt>
     <dd>
      <p class="para">
       O parâmetro <code class="parameter">type</code> seleciona o tipo de comunicação a
       ser usada pelo soquete.
      </p>
      <table class="doctable table">
       <caption><strong>Tipos de soquete disponíveis</strong></caption>
       
        <thead>
         <tr>
          <th>Tipo</th>
          <th>Descrição</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>
           Fornece fluxos de byte sequenciais, confiáveis, bidirecionais simultâneos, baseados em conexão.
           Um mecanismo de transmissão de dados fora-de-banda pode ser suportado.
           O protocolo TCP é baseado neste tipo de soquete.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Suporta datagramas (mensagens sem uma conexão e não confiáveis ​​de comprimento máximo fixo).
           O protocolo UDP é baseado neste tipo de soquete.
          </td>
         </tr>

           <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
          <td>
           Fornece um caminho de transmissão de dados sequencial, confiável e bidirecional baseado em conexão para
           datagramas de comprimento máximo fixo; um consumidor é obrigado a ler um
           pacote inteiro com cada chamada de leitura.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Fornece acesso bruto ao protocolo de rede. Este tipo especial de soquete
           pode ser usado para construir manualmente qualquer tipo de protocolo. Um uso comum
           para esse tipo de soquete é realizar solicitações ICMP (como &quot;ping&quot;).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Fornece uma camada de datagrama confiável que não garante a ordenação.
           Na maior parte dos sistemas operacionais isto não está implementado.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">protocol</code></dt>
     <dd>
      <p class="para">
       O parâmetro <code class="parameter">protocol</code> define o protocolo
       específico dentro do domínio especificado em <code class="parameter">domain</code> a ser usado
       durante a comunicação no socket retornado. O valor adequado pode ser
       recuperado por nome usando <span class="function"><a href="function.getprotobyname.php" class="function">getprotobyname()</a></span>. Se
       o protocolo desejado for TCP ou UDP, as constantes correspondentes
       <strong><code><a href="sockets.constants.php#constant.sol-tcp">SOL_TCP</a></code></strong> e <strong><code><a href="sockets.constants.php#constant.sol-udp">SOL_UDP</a></code></strong>
       também podem ser usadas.
      </p>
      <table class="doctable table">
       <caption><strong>Protocolos comuns</strong></caption>
       
        <thead>
         <tr>
          <th>Nome</th>
          <th>Descrição</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>icmp</td>
          <td>
           O Internet Control Message Protocol é usado principalmente por &quot;gateways&quot;
           e &quot;hosts&quot; para relatar erros na comunicação de datagramas. O comando
           &quot;ping&quot; (presente na maioria dos sistemas operacionais modernos) é um exemplo
           de aplicação do ICMP.
          </td>
         </tr>

         <tr>
          <td>udp</td>
          <td>
           O User Datagram Protocol é um protocolo sem conexão e não confiável,
           com comprimentos de registro fixos. Devido a esses aspectos, o UDP
           requer uma quantidade mínima de sobrecarga de protocolo.
          </td>
         </tr>

         <tr>
          <td>tcp</td>
          <td>
           O Transmission Control Protocol é um protocolo confiável, baseado em conexão,
           orientado a fluxo e bidirecional simultâneo. O TCP garante que todos os pacotes de dados
           serão recebidos na ordem em que foram enviados. Se algum pacote for perdido de alguma
           forma durante a comunicação, o TCP retransmitirá automaticamente o pacote até que
           o computador de destino reconheça esse pacote. Por razões de confiabilidade e
           desempenho, a própria implementação do TCP decide os limites apropriados do octeto
           da camada de comunicação do datagrama subjacente. Portanto, as aplicações TCP devem
           permitir a possibilidade de transmissão parcial de registros.
          </td>
         </tr>

        </tbody>
       
      </table>

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


 <div class="refsect1 returnvalues" id="refsect1-function.socket-create-returnvalues">
  <h3 class="title">Valor Retornado</h3>
  <p class="para">
   <span class="function"><strong>socket_create()</strong></span> retorna uma instância de <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span> em caso de sucesso,
   ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> em caso de erro. O código de erro real pode ser recuperado chamando
   <span class="function"><a href="function.socket-last-error.php" class="function">socket_last_error()</a></span>. Este código de erro pode ser passado para
   <span class="function"><a href="function.socket-strerror.php" class="function">socket_strerror()</a></span> para obter uma explicação textual do
   erro.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.socket-create-errors">
  <h3 class="title">Erros/Exceções</h3>
  <p class="para">
   Se um <code class="parameter">domain</code> ou
   <code class="parameter">type</code> inválidos forem fornecidos, o padrão de <span class="function"><strong>socket_create()</strong></span>
   é usar <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong> e
   <strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong> respectivamente e emitir, adicionalmente, uma
   mensagem <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">Registro de Alterações</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versão</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       Em caso de sucesso, esta função agora retorna uma instância de <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>;
       anteriormente, retornava um <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">Veja Também</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> - Aceita uma conex&atilde;o em um soquete</span></li>
    <li><span class="function"><a href="function.socket-bind.php" class="function" rel="rdfs-seeAlso">socket_bind()</a> - Vincula um nome a um soquete</span></li>
    <li><span class="function"><a href="function.socket-connect.php" class="function" rel="rdfs-seeAlso">socket_connect()</a> - Inicia uma conex&atilde;o em um soquete</span></li>
    <li><span class="function"><a href="function.socket-listen.php" class="function" rel="rdfs-seeAlso">socket_listen()</a> - Escuta uma conex&atilde;o em um soquete</span></li>
    <li><span class="function"><a href="function.socket-last-error.php" class="function" rel="rdfs-seeAlso">socket_last_error()</a> - Retorna o &uacute;ltimo erro no soquete</span></li>
    <li><span class="function"><a href="function.socket-strerror.php" class="function" rel="rdfs-seeAlso">socket_strerror()</a> - Retorna uma string descrevendo um erro no soquete</span></li>
   </ul>
  </p>
 </div>


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