mirror of
https://github.com/php/doc-de.git
synced 2026-04-25 16:08:17 +02:00
277 lines
8.8 KiB
XML
277 lines
8.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Maintainer: sammywg Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
<!-- Rev-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Reviewer: samesch -->
|
|
<refentry xml:id="function.fsockopen" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>fsockopen</refname>
|
|
<refpurpose>Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type class="union"><type>resource</type><type>false</type></type><methodname>fsockopen</methodname>
|
|
<methodparam><type>string</type><parameter>hostname</parameter></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>port</parameter><initializer>-1</initializer></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter role="reference">error_code</parameter><initializer>&null;</initializer></methodparam>
|
|
<methodparam choice="opt"><type>string</type><parameter role="reference">error_message</parameter><initializer>&null;</initializer></methodparam>
|
|
<methodparam choice="opt"><type class="union"><type>float</type><type>null</type></type><parameter>timeout</parameter><initializer>&null;</initializer></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Initialisiert eine Socket-Verbindung zu der in
|
|
<parameter>hostname</parameter> angegebenen Ressource.
|
|
</para>
|
|
<para>
|
|
PHP unterstützt Ziele in Internet- und Unixdomänen, wie sie unter
|
|
<xref linkend="transports"/> beschrieben sind. Eine Liste unterstützter
|
|
Transportarten kann auch mittels
|
|
<function>stream_get_transports</function> abgerufen werden.
|
|
</para>
|
|
<para>
|
|
Der Socket wird standardmäßig im blockierenden Modus geöffnet. Mit der
|
|
Funktion <function>stream_set_blocking</function> kann auf den
|
|
nichtblockierenden Modus gewechselt werden.
|
|
</para>
|
|
<para>
|
|
Die Funktion <function>stream_socket_client</function> ist ähnlich, bietet
|
|
aber eine umfangreichere Auswahl von Optionen an, einschließlich
|
|
blockierungsfreier Verbindungen und der Möglichkeit, einen Stream-Kontext
|
|
zu übergeben.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>hostname</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Ist die OpenSSL-Unterstützung
|
|
<link linkend="openssl.installation">installiert</link>, kann dem
|
|
Parameter <parameter>hostname</parameter> entweder ein
|
|
<literal>ssl://</literal> oder ein <literal>tls://</literal>
|
|
vorangestellt werden, um bei der Verbindung zum entfernten Host eine
|
|
SSL- oder TLS-Clientverbindung über TCP/IP zu verwenden.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>port</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Die Portnummer. Diese kann ausgelassen und mit <literal>-1</literal>
|
|
übersprungen werden, wenn der Transport keinen Port verwendet, &zb;
|
|
<literal>unix://</literal>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>error_code</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Falls angegeben, enthält der Parameter die Fehlernummer auf
|
|
Systemebene, die beim Aufruf der Funktion <literal>connect()</literal>
|
|
auftrat.
|
|
</para>
|
|
<para>
|
|
Wenn der Rückgabewert von <parameter>error_code</parameter>
|
|
<literal>0</literal> ist und die Funktion &false; zurückgibt, ist dies
|
|
ein Zeichen, dass der Fehler vor dem Aufruf von
|
|
<literal>connect()</literal> auftrat. Dies ist meist der Fall,
|
|
wenn es ein Problem beim Initialisieren des Sockets gibt.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>error_message</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Die Fehlermeldung als String.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>timeout</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Der Verbindungs-Timeout in Sekunden. Falls &null;, wird die
|
|
&php.ini;-Einstellung
|
|
<link linkend="ini.default-socket-timeout">default_socket_timeout</link>
|
|
verwendet.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
Um einen Timeout für das Lesen oder Schreiben von Daten über den
|
|
Socket zu setzen, muss <function>stream_set_timeout</function>
|
|
verwendet werden, da der Parameter <parameter>timeout</parameter> von
|
|
<function>fsockopen</function> nur für den Verbindungsaufbau mit dem
|
|
Socket gedacht ist.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Die Funktion <function>fsockopen</function> gibt einen Zeiger auf eine
|
|
Datei zurück, der zusammen mit den anderen Dateifunktionen (wie
|
|
<function>fgets</function>, <function>fgetss</function>,
|
|
<function>fwrite</function>, <function>fclose</function> und
|
|
<function>feof</function>) verwendet werden kann. Wenn der Aufruf
|
|
fehlschlägt, wird &false; zurückgegeben.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="errors">
|
|
&reftitle.errors;
|
|
<para>
|
|
Löst einen Fehler der Stufe <constant>E_WARNING</constant> aus, wenn
|
|
<parameter>hostname</parameter> keine gültige Domain ist.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="changelog"><!-- {{{ -->
|
|
&reftitle.changelog;
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>8.0.0</entry>
|
|
<entry>
|
|
<parameter>timeout</parameter> ist nun nullable (akzeptiert den
|
|
&null;-Wert).
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title><function>fsockopen</function>-Beispiel</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
|
|
if (!$fp) {
|
|
echo "$errstr ($errno)<br />\n";
|
|
} else {
|
|
$out = "GET / HTTP/1.1\r\n";
|
|
$out .= "Host: www.example.com\r\n";
|
|
$out .= "Connection: Close\r\n\r\n";
|
|
fwrite($fp, $out);
|
|
while (!feof($fp)) {
|
|
echo fgets($fp, 128);
|
|
}
|
|
fclose($fp);
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Eine UDP-Verbindung nutzen</title>
|
|
<para>
|
|
Das folgende Beispiel zeigt, wie Sie den Tag und die Zeit vom UDP-Service
|
|
"daytime" (Port 13) Ihrer Maschine abfragen können.
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
|
|
if (!$fp) {
|
|
echo "ERROR: $errno - $errstr<br />\n";
|
|
} else {
|
|
fwrite($fp, "\n");
|
|
echo fread($fp, 26);
|
|
fclose($fp);
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<note>
|
|
<para>
|
|
Abhängig von der Systemumgebung kann es vorkommen, dass die Unix-Domäne
|
|
oder der optionale Verbindungs-Timeout nicht verfügbar sind.
|
|
</para>
|
|
</note>
|
|
<warning>
|
|
<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 "verbindungsloses" Protokoll
|
|
ist, was bedeutet, dass das Betriebssystem nicht versucht, eine Verbindung
|
|
zum Socket herzustellen, solange es nicht wirklich Daten senden oder
|
|
empfangen muss.
|
|
</para>
|
|
</warning>
|
|
&ipv6.brackets;
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>pfsockopen</function></member>
|
|
<member><function>stream_socket_client</function></member>
|
|
<member><function>stream_set_blocking</function></member>
|
|
<member><function>stream_set_timeout</function></member>
|
|
<member><function>fgets</function></member>
|
|
<member><function>fgetss</function></member>
|
|
<member><function>fwrite</function></member>
|
|
<member><function>fclose</function></member>
|
|
<member><function>feof</function></member>
|
|
<member><function>socket_connect</function></member>
|
|
<member>Die <link linkend="ref.curl">Curl-Erweiterung</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|