<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.network.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.fsockopen.php',
    1 => 'fsockopen',
    2 => 'Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her',
  ),
  'up' => 
  array (
    0 => 'ref.network.php',
    1 => 'Netzwerk-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.dns-get-record.php',
    1 => 'dns_get_record',
  ),
  'next' => 
  array (
    0 => 'function.gethostbyaddr.php',
    1 => 'gethostbyaddr',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/network/functions/fsockopen.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.fsockopen" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">fsockopen</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">fsockopen</span> &mdash; <span class="dc-title">Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.fsockopen-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>fsockopen</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$hostname</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$port</code><span class="initializer"> = -1</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter reference">&$error_code</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter reference">&$error_message</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.float.php" class="type float">float</a></span></span> <code class="parameter">$timeout</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Initialisiert eine Socket-Verbindung zu der in
   <code class="parameter">hostname</code> angegebenen Ressource.
  </p>
  <p class="para">
   PHP unterstützt Ziele in Internet- und Unixdomänen, wie sie unter
   <a href="transports.php" class="xref">Liste der unterst&uuml;tzten Socket-Transporter</a> beschrieben sind. Eine Liste unterstützter
   Transportarten kann auch mittels
   <span class="function"><a href="function.stream-get-transports.php" class="function">stream_get_transports()</a></span> abgerufen werden.
  </p>
  <p class="para">
   Der Socket wird standardmäßig im blockierenden Modus geöffnet. Mit der
   Funktion <span class="function"><a href="function.stream-set-blocking.php" class="function">stream_set_blocking()</a></span> kann auf den
   nichtblockierenden Modus gewechselt werden.
  </p>
  <p class="para">
   Die Funktion <span class="function"><a href="function.stream-socket-client.php" class="function">stream_socket_client()</a></span> ist ähnlich, bietet
   aber eine umfangreichere Auswahl von Optionen an, einschließlich
   blockierungsfreier Verbindungen und der Möglichkeit, einen Stream-Kontext
   zu übergeben.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.fsockopen-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">hostname</code></dt>
     <dd>
      <p class="para">
       Ist die OpenSSL-Unterstützung
       <a href="openssl.installation.php" class="link">installiert</a>, kann dem
       Parameter <code class="parameter">hostname</code> entweder ein
       <code class="literal">ssl://</code> oder ein <code class="literal">tls://</code>
       vorangestellt werden, um bei der Verbindung zum entfernten Host eine
       SSL- oder TLS-Clientverbindung über TCP/IP zu verwenden.
      </p>
     </dd>
    
    
     <dt><code class="parameter">port</code></dt>
     <dd>
      <p class="para">
       Die Portnummer. Diese kann ausgelassen und mit <code class="literal">-1</code>
       übersprungen werden, wenn der Transport keinen Port verwendet, z. B.
       <code class="literal">unix://</code>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">error_code</code></dt>
     <dd>
      <p class="para">
       Falls angegeben, enthält der Parameter die Fehlernummer auf
       Systemebene, die beim Aufruf der Funktion <code class="literal">connect()</code>
       auftrat.
      </p>
      <p class="para">
       Wenn der Rückgabewert von <code class="parameter">error_code</code>
       <code class="literal">0</code> ist und die Funktion <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgibt, ist dies
       ein Zeichen, dass der Fehler vor dem Aufruf von
       <code class="literal">connect()</code> auftrat. Dies ist meist der Fall,
       wenn es ein Problem beim Initialisieren des Sockets gibt.
      </p>
     </dd>
    
    
     <dt><code class="parameter">error_message</code></dt>
     <dd>
      <p class="para">
       Die Fehlermeldung als String.
      </p>
     </dd>
    
    
     <dt><code class="parameter">timeout</code></dt>
     <dd>
      <p class="para">
       Der Verbindungs-Timeout in Sekunden. Falls <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, wird die
       <var class="filename">php.ini</var>-Einstellung
       <a href="filesystem.configuration.php#ini.default-socket-timeout" class="link">default_socket_timeout</a>
       verwendet.
      </p>
      <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
       <p class="para">
        Um einen Timeout für das Lesen oder Schreiben von Daten über den
        Socket zu setzen, muss <span class="function"><a href="function.stream-set-timeout.php" class="function">stream_set_timeout()</a></span>
        verwendet werden, da der Parameter <code class="parameter">timeout</code> von
        <span class="function"><strong>fsockopen()</strong></span> nur für den Verbindungsaufbau mit dem
        Socket gedacht ist.
       </p>
      </p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.fsockopen-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Die Funktion <span class="function"><strong>fsockopen()</strong></span> gibt einen Zeiger auf eine
   Datei zurück, der zusammen mit den anderen Dateifunktionen (wie
   <span class="function"><a href="function.fgets.php" class="function">fgets()</a></span>, <span class="function"><a href="function.fgetss.php" class="function">fgetss()</a></span>,
   <span class="function"><a href="function.fwrite.php" class="function">fwrite()</a></span>, <span class="function"><a href="function.fclose.php" class="function">fclose()</a></span> und
   <span class="function"><a href="function.feof.php" class="function">feof()</a></span>) verwendet werden kann. Wenn der Aufruf
   fehlschlägt, wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.fsockopen-errors">
  <h3 class="title">Fehler/Exceptions</h3>
  <p class="para">
   Löst einen Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> aus, wenn
   <code class="parameter">hostname</code> keine gültige Domain ist.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.fsockopen-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>
       <code class="parameter">timeout</code> ist nun nullable (akzeptiert den
       <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>-Wert).
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.fsockopen-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>fsockopen()</strong></span>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fsockopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"www.example.com"</span><span style="color: #007700">, </span><span style="color: #0000BB">80</span><span style="color: #007700">, </span><span style="color: #0000BB">$errno</span><span style="color: #007700">, </span><span style="color: #0000BB">$errstr</span><span style="color: #007700">, </span><span style="color: #0000BB">30</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$fp</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$errstr</span><span style="color: #DD0000"> (</span><span style="color: #0000BB">$errno</span><span style="color: #DD0000">)&lt;br /&gt;\n"</span><span style="color: #007700">;<br />} else {<br />    </span><span style="color: #0000BB">$out </span><span style="color: #007700">= </span><span style="color: #DD0000">"GET / HTTP/1.1\r\n"</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$out </span><span style="color: #007700">.= </span><span style="color: #DD0000">"Host: www.example.com\r\n"</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$out </span><span style="color: #007700">.= </span><span style="color: #DD0000">"Connection: Close\r\n\r\n"</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">$out</span><span style="color: #007700">);<br />    while (!</span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">)) {<br />        echo </span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">128</span><span style="color: #007700">);<br />    }<br />    </span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Eine UDP-Verbindung nutzen</strong></p>
    <div class="example-contents"><p>
     Das folgende Beispiel zeigt, wie Sie den Tag und die Zeit vom UDP-Service
     &quot;daytime&quot; (Port 13) Ihrer Maschine abfragen können.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fsockopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"udp://127.0.0.1"</span><span style="color: #007700">, </span><span style="color: #0000BB">13</span><span style="color: #007700">, </span><span style="color: #0000BB">$errno</span><span style="color: #007700">, </span><span style="color: #0000BB">$errstr</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$fp</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"ERROR: </span><span style="color: #0000BB">$errno</span><span style="color: #DD0000"> - </span><span style="color: #0000BB">$errstr</span><span style="color: #DD0000">&lt;br /&gt;\n"</span><span style="color: #007700">;<br />} else {<br />    </span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">);<br />    echo </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">26</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.fsockopen-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Abhängig von der Systemumgebung kann es vorkommen, dass die Unix-Domäne
    oder der optionale Verbindungs-Timeout nicht verfügbar sind.
   </p>
  </p></blockquote>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    UDP-Sockets werden manchmal ohne die Rückgabe eines Fehlermeldung
    geöffnet, obwohl der entfernte Host nicht erreichbar ist. Der Fehler wird
    nur sichtbar, wenn Sie Daten vom Socket lesen oder zum Socket schreiben
    wollen. Der Grund dafür ist, dass UDP ein &quot;verbindungsloses&quot; Protokoll
    ist, was bedeutet, dass das Betriebssystem nicht versucht, eine Verbindung
    zum Socket herzustellen, solange es nicht wirklich Daten senden oder
    empfangen muss.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <span class="simpara">Wenn Sie eine numerische IPv6-Adresse
angeben, z. B. <code class="literal">fe80::1</code>, müssen Sie die IP in eckige Klammern
schreiben, z. B. <code class="literal">tcp://[fe80::1]:80</code>.</span></p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.fsockopen-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.pfsockopen.php" class="function" rel="rdfs-seeAlso">pfsockopen()</a> - &Ouml;ffnet eine persistente Verbindung zum Internet oder zu einem Unix-Domainsocket</span></li>
    <li><span class="function"><a href="function.stream-socket-client.php" class="function" rel="rdfs-seeAlso">stream_socket_client()</a> - Open Internet or Unix domain socket connection</span></li>
    <li><span class="function"><a href="function.stream-set-blocking.php" class="function" rel="rdfs-seeAlso">stream_set_blocking()</a> - Set blocking/non-blocking mode on a stream</span></li>
    <li><span class="function"><a href="function.stream-set-timeout.php" class="function" rel="rdfs-seeAlso">stream_set_timeout()</a> - Set timeout period on a stream</span></li>
    <li><span class="function"><a href="function.fgets.php" class="function" rel="rdfs-seeAlso">fgets()</a> - Liest die Zeile von der Position des Dateizeigers</span></li>
    <li><span class="function"><a href="function.fgetss.php" class="function" rel="rdfs-seeAlso">fgetss()</a> - Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags.</span></li>
    <li><span class="function"><a href="function.fwrite.php" class="function" rel="rdfs-seeAlso">fwrite()</a> - Bin&auml;r-sicheres Dateischreiben</span></li>
    <li><span class="function"><a href="function.fclose.php" class="function" rel="rdfs-seeAlso">fclose()</a> - Schlie&szlig;t einen offenen Dateizeiger</span></li>
    <li><span class="function"><a href="function.feof.php" class="function" rel="rdfs-seeAlso">feof()</a> - Pr&uuml;ft, ob ein Dateizeiger am Ende der Datei steht</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>Die <a href="ref.curl.php" class="link">Curl-Erweiterung</a></li>
   </ul>
  </p>
 </div>


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