<?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 => 'ru',
  ),
  'this' => 
  array (
    0 => 'function.socket-create.php',
    1 => 'socket_create',
    2 => 'Создаёт сокет (конечную точку для обмена информацией)',
  ),
  'up' => 
  array (
    0 => 'ref.sockets.php',
    1 => 'Функции модуля 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' => 'ru',
    '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">Создаёт сокет (конечную точку для обмена информацией)</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.socket-create-description">
  <h3 class="title">Описание</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="classname"><a href="class.socket.php" class="classname">Socket</a></span>, также называемый как конечная точка
   обмена информацией. Типичное сетевое соединение состоит из двух сокетов, один из
   которых выполняет роль клиента, а другой выполняет роль сервера.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.socket-create-parameters">
  <h3 class="title">Список параметров</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <p class="para">
       Параметр  <code class="parameter">domain</code> определяет семейство протоколов,
       используемых сокетами.
      </p>
      <table class="doctable table">
       <caption><strong>Доступные семейства адресов/протоколов</strong></caption>
       
        <thead>
         <tr>
          <th>Семейство</th>
          <th>Описание</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>
           Internet-протоколы IPv4. TCP и UDP - это стандартные протоколы
           этого семейства протоколов.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           Internet-протоколы IPv6. TCP и UDP - это стандартные протоколы
           этого семейства протоколов.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Семейство протоколов для локального обмена данными. Высокая эффективность и
           низкие накладные расходы делают его отличным видом IPC (межпроцессного
           взаимодействия).
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">type</code></dt>
     <dd>
      <p class="para">
       Параметр <code class="parameter">type</code> определяет тип обмена данными, который будет
       использоваться сокетом.
      </p>
      <table class="doctable table">
       <caption><strong>Доступные типы сокетов</strong></caption>
       
        <thead>
         <tr>
          <th>Тип</th>
          <th>Описание</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>
           Обеспечивает последовательные, надёжные, полнодуплексные, байтовые потоки с установлением соединения.
           Может поддерживаться механизм передачи внеполосных (out-of-band) данных.
           Протокол TCP основан на этом типе сокетов.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Поддерживает датаграммы (ненадёжные сообщения без установления соединения фиксированной максимальной длины).
           Протокол UDP основан на этом типе сокетов.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
            <td>
             Предоставляет последовательную, надёжную, двунаправленную, базирующуюся на
             соединениях передачу датаграмм с фиксированной максимальной длиной.
             Потребитель должен читать весь пакет целиком при каждой итерации чтения.
            </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Предоставляет доступ по неподготовленному (raw) сетевому протоколу.
           Это специальный тип сокета может быть использован для ручного создания
           любого типа протокола. Стандартное использование
           этого типа сокетов - выполнение запросов ICMP (таких как ping).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Предоставляет надёжный уровень датаграм, не гарантирующий сохранение порядка.
           Скорее всего, это семейство протоколов не реализовано в вашей операционной системе.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">protocol</code></dt>
     <dd>
      <p class="para">
       Параметр <code class="parameter">protocol</code> указывает конкретный протокол в заданном
       семействе протоколов <code class="parameter">domain</code>, который будет использоваться
       в обмене данными с созданным сокетом. Соответствующее значение может быть
       получено по имени при помощи функции <span class="function"><a href="function.getprotobyname.php" class="function">getprotobyname()</a></span>. Если
       желаемый протокол TCP или UDP, то соответствующие константы
       <strong><code><a href="sockets.constants.php#constant.sol-tcp">SOL_TCP</a></code></strong> и <strong><code><a href="sockets.constants.php#constant.sol-udp">SOL_UDP</a></code></strong>
       также могут быть использованы.
      </p>
      <table class="doctable table">
       <caption><strong>Стандартные протоколы</strong></caption>
       
        <thead>
         <tr>
          <th>Название</th>
          <th>Описание</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>icmp</td>
          <td>
           ICMP (Internet Control Message Protocol, протокол межсетевых управляющих сообщений)
           используется преимущественно шлюзами и хостами для сообщения об ошибках в
           передаче датаграмм. Команда &quot;ping&quot; (присутствующая в большинстве современных
           операционных систем) - это пример использования ICMP-протокола.
          </td>
         </tr>

         <tr>
          <td>udp</td>
          <td>
           UDP (User Datagram Protocol, протокол пользовательских датаграмм) - это протокол без
           установления соединения, ненадёжный, протокол с фиксированной длиной записей.
           Из-за этих аспектов, UDP требует минимального количества служебной информации.
          </td>
         </tr>

         <tr>
          <td>tcp</td>
          <td>
           TCP (The Transmission Control Protocol, протокол управления передачей) - это надёжный,
           базирующийся на соединениях, потокоориентированный, полнодуплексный протокол.
           TCP гарантирует, что все пакеты данных будут получены в том порядке, в котором они
           были отправлены. Если какой-нибудь пакет каким-либо образом был утерян во время
           передачи данных, TCP будет автоматически передавать пакет повторно до тех пор, пока
           хост назначения не подтвердит этот пакет. В целях надёжности и производительности,
           реализация протокола TCP сама выбирает подходящие границы октета нижележащего
           уровня обмена датаграммами. Таким образом, приложения, использующие TCP,
           должны предоставлять возможность частичной передачи записей.
          </td>
         </tr>

        </tbody>
       
      </table>

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


 <div class="refsect1 returnvalues" id="refsect1-function.socket-create-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Функция <span class="function"><strong>socket_create()</strong></span> возвращает экземпляр <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span> в случае успешного выполнения,
   или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> в случае возникновения ошибки. Код ошибки может быть получен при помощи вызова
   функции <span class="function"><a href="function.socket-last-error.php" class="function">socket_last_error()</a></span>. Эта ошибка может быть передана
   функции <span class="function"><a href="function.socket-strerror.php" class="function">socket_strerror()</a></span> для получения текстового описания
   ошибки.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.socket-create-errors">
  <h3 class="title">Ошибки</h3>
  <p class="para">
   Если указан неверный параметр <code class="parameter">domain</code> или
   <code class="parameter">type</code>, функция <span class="function"><strong>socket_create()</strong></span>
   будет использовать по умолчанию значение <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong> и
   <strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong> соответственно, и дополнительно к этому выдаст
   сообщение <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">Список изменений</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Версия</th>
      <th>Описание</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       В случае успешного выполнения функция возвращает экземпляр <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>;
       ранее возвращался ресурс (<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">Смотрите также</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> - Принимает соединение на сокете</span></li>
    <li><span class="function"><a href="function.socket-bind.php" class="function" rel="rdfs-seeAlso">socket_bind()</a> - Привязывает имя к сокету</span></li>
    <li><span class="function"><a href="function.socket-connect.php" class="function" rel="rdfs-seeAlso">socket_connect()</a> - Начинает соединение с сокетом</span></li>
    <li><span class="function"><a href="function.socket-listen.php" class="function" rel="rdfs-seeAlso">socket_listen()</a> - Прослушивает входящие соединения на сокете</span></li>
    <li><span class="function"><a href="function.socket-last-error.php" class="function" rel="rdfs-seeAlso">socket_last_error()</a> - Возвращает последнюю ошибку сокета</span></li>
    <li><span class="function"><a href="function.socket-strerror.php" class="function" rel="rdfs-seeAlso">socket_strerror()</a> - Возвращает строку, описывающую ошибку сокета</span></li>
   </ul>
  </p>
 </div>


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