<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.socket-create.php',
    1 => 'socket_create',
    2 => 'Erzeugt einen Socket (Endpunkt f&uuml;r die Kommunikation)',
  ),
  'up' => 
  array (
    0 => 'ref.sockets.php',
    1 => 'Socket-Funktionen',
  ),
  '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' => 'de',
    '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">Erzeugt einen Socket (Endpunkt für die Kommunikation)</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.socket-create-description">
  <h3 class="title">Beschreibung</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">
   Erzeugt eine <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>-Instanz (auch als
   Kommunikations-Endpunkt bezeichnet) und gibt sie zurück. Eine typische
   Netzwerkverbindung besteht aus zwei Sockets, von denen der eine die Rolle
   des Clients und der andere die Rolle des Servers übernimmt.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.socket-create-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">domain</code></dt>
     <dd>
      <p class="para">
       Der <code class="parameter">domain</code>-Parameter legt die Protokollfamilie
       fest, die für die Kommunikation vom Socket benutzt wird.
      </p>
      <table class="doctable table">
       <caption><strong>Folgende Adressen/Protokollfamilien sind verfügbar:</strong></caption>
       
        <thead>
         <tr>
          <th>Domain</th>
          <th>Beschreibung</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>
           IPv4-basierte Internet-Protokolle. TCP und UDP sind allgemein
           gebräuchliche Protokolle dieser Familie.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           IPv6-basierte Internet-Protokolle. TCP und UDP sind allgemein
           gebräuchliche Protokolle dieser Familie.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Protokollfamilie für die lokale Kommunikation. Hohe Effizienz und
           ein geringer Overhead machen sie zur ersten Wahl für die IPC
           (Inter-Process Communication).
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">type</code></dt>
     <dd>
      <p class="para">
       Der Parameter <code class="parameter">type</code> bestimmt den
       Kommunikationstyp, den der Socket verwenden soll.
      </p>
      <table class="doctable table">
       <caption><strong>Mögliche Socket-Typen</strong></caption>
       
        <thead>
         <tr>
          <th>Typ</th>
          <th>Beschreibung</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>
           Stellt zuverlässige, sequentielle verbindungsorientierte
           Byte-Streams im Vollduplexmodus zur Verfügung. Auch bandexterne
           Mechanismen zur Datenübertragung können unterstützt werden. Das
           TCP-Protokoll beruht auf diesem Socket-Typ.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Unterstützt Datagramme (verbindunglos, Nachrichten vorgegebener
           Maximallänge, deren Übertragung nicht zuverlässig ist). Das
           UDP-Protokoll beruht auf diesem Socket-Typ.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
          <td>
           Stellt einen zuverlässigen, sequentiellen, bidirektionalen,
           verbindungsorientierten Übertragungsweg für Datagramme vorgegebener
           Maximallänge zur Verfügung. Ein Empfänger muss bei jeder
           Leseanforderung das gesamte Datenpaket lesen.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Stellt einen Zugang mit einem nicht bestimmten Netzwerkprotokoll
           zur Verfügung. Dieser spezielle Socket-Typ kann dazu benutzt
           werden, um manuell ein Protokoll eines beliebigen Typs zu
           erstellen. Solche Sockets werden üblicherweise benutzt, um
           ICMP-Requests zu senden (wie etwa bei ping).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.php#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Stellt eine zuverlässige Schicht für Datagramme zur Verfügung, in
           der die Reihenfolge der Datagramme nicht garantiert wird. Dies ist
           in den meisten Betriebssytemen nicht implementiert.
          </td>
         </tr>

        </tbody>
       
      </table>

     </dd>
    
    
     <dt><code class="parameter">protocol</code></dt>
     <dd>
      <p class="para">
       Der Parameter <code class="parameter">protocol</code> setzt das spezifische
       Protokoll innerhalb der angegebenen <code class="parameter">domain</code>, das
       vom zurückgegebenen Socket für die Kommunikation benutzt wird. Der
       passende Wert kann ermittelt werden, indem der Name des Protokolls an
       die Funktion <span class="function"><a href="function.getprotobyname.php" class="function">getprotobyname()</a></span> übergeben wird. Wenn
       TCP oder UDP gewünscht werden, können auch die entsprechenden
       Konstanten <strong><code><a href="sockets.constants.php#constant.sol-tcp">SOL_TCP</a></code></strong> und
       <strong><code><a href="sockets.constants.php#constant.sol-udp">SOL_UDP</a></code></strong> benutzt werden.
      </p>
      <table class="doctable table">
       <caption><strong>Gebräuchliche Protokolle</strong></caption>
       
        <thead>
         <tr>
          <th>Name</th>
          <th>Beschreibung</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>icmp</td>
          <td>
           Das Internet Control Message Protocol wird hauptsächlich von
           Gateways und Hosts benutzt, um Kommunikationsfehler bei Datagrammen
           zu melden. Das Kommando &quot;ping&quot; (das in den meisten modernen
           Betriebssystemen enthalten ist) ist ein Beispiel für eine Anwendung
           von ICMP.
          </td>
         </tr>

         <tr>
          <td>udp</td>
          <td>
           Das User Datagram Protocol ist ein verbindungsloses, unzuverlässiges
           Protokoll, mit dem Datensätze fester Länge versendet werden können.
           Aufgrund dieser geringen Anforderungen braucht UDP nur einen
           minimalen Protokoll-Overhead.
          </td>
         </tr>

         <tr>
          <td>tcp</td>
          <td>
           Das Transmission Control Protocol ist ein zuverlässiges,
           verbindungsorientiertes, Stream-orientiertes Protokoll für den
           Vollduplex-Betrieb. Bei TCP ist garantiert, dass alle Datenpakete
           in derselben Reihenfolge empfangen werden, in der sie gesendet
           wurden. Falls während der Übertragung ein Datenpaket verlorengeht,
           wird es von TCP erneut versendet, und zwar solange, bis der
           Empfängerhost den Eingang dieses Paktes zurückmeldet. Aus Gründen
           der Zuverlässigkeit und Leistung ist TCP so implementiert, dass es
           eigenständig die Oktet-Grenzen der darunterliegenden
           Datagramm-Kommunikationschicht bestimmen kann. Aus diesem Grund
           müssen TCP Anwendungen in der Lage sein, auch Teilübertragungen
           empfangen zu können.
          </td>
         </tr>

        </tbody>
       
      </table>

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


 <div class="refsect1 returnvalues" id="refsect1-function.socket-create-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Bei Erfolg gibt <span class="function"><strong>socket_create()</strong></span> eine
   <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>-Instanz zurück, bei einem Fehler wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
   zurückgegeben. Der aktuelle Fehlercode kann mit
   <span class="function"><a href="function.socket-last-error.php" class="function">socket_last_error()</a></span> ermittelt und an die Funktion
   <span class="function"><a href="function.socket-strerror.php" class="function">socket_strerror()</a></span> übergeben werden, um eine textuelle
   Beschreibing des Fehlers zu erhalten.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.socket-create-errors">
  <h3 class="title">Fehler/Exceptions</h3>
   <p class="para">
    Falls eine ungültige <code class="parameter">domain</code> oder ein ungültiger
    <code class="parameter">type</code> angegbeben wird, fällt
    <span class="function"><strong>socket_create()</strong></span> auf seine Standardeinstellungen
    <strong><code><a href="sockets.constants.php#constant.af-inet">AF_INET</a></code></strong> bzw. <strong><code><a href="sockets.constants.php#constant.sock-stream">SOCK_STREAM</a></code></strong> zurück,
    und gibt zusätzlich eine <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>-Meldung aus.
   </p>
 </div>


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

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       Bei Erfolg gibt diese Funktion nun eine
       <span class="classname"><a href="class.socket.php" class="classname">Socket</a></span>-Instanz zurück; zuvor wurde eine
       <span class="type"><a href="language.types.resource.php" class="link">Ressource</a></span> zurückgegeben.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.socket-create-seealso">
  <h3 class="title">Siehe auch</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> - Akzeptiert eine Verbindung an einem Socket</span></li>
    <li><span class="function"><a href="function.socket-bind.php" class="function" rel="rdfs-seeAlso">socket_bind()</a> - Verkn&uuml;pft einen Socket mit einem Namen</span></li>
    <li><span class="function"><a href="function.socket-connect.php" class="function" rel="rdfs-seeAlso">socket_connect()</a> - Baut eine Verbindung &uuml;ber einen Socket auf</span></li>
    <li><span class="function"><a href="function.socket-listen.php" class="function" rel="rdfs-seeAlso">socket_listen()</a> - H&ouml;rt einen Socket nach Verbindungsanforderungen ab</span></li>
    <li><span class="function"><a href="function.socket-last-error.php" class="function" rel="rdfs-seeAlso">socket_last_error()</a> - Gibt den letzten Fehler zur&uuml;ck, der an einem Socket aufgetreten ist</span></li>
    <li><span class="function"><a href="function.socket-strerror.php" class="function" rel="rdfs-seeAlso">socket_strerror()</a> - Gibt einen String zur&uuml;ck, der einen Socket-Fehler beschreibt</span></li>
   </ul>
  </p>
 </div>


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