1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-24 07:12:15 +01:00
Files
archived-doc-de/reference/sockets/examples.xml
Christoph Michael Becker 2c216ff7dd Fix typos
Patches provided by anonymous users.

git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@348136 c90b9560-bf6c-de11-be94-00142212c4b1
2019-10-06 10:06:38 +00:00

168 lines
4.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: af4410a7e15898c3dbe83d6ea38246745ed9c6fb Maintainer: conni Status: ready -->
<chapter xml:id="sockets.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<para>
<example>
<title>Socket-Beispiel: Einfacher TCP/IP-Server</title>
<para>
Dieses Beispiel zeigt einen einfachen Echo-Server. Passen Sie
die Variablen <varname>address</varname> und <varname>port</varname>
an Ihre Systemumgebung an und führen Sie das Skript aus. Dann können
Sie sich mit einem Befehl wie: <command>telnet 192.168.1.53 10000</command>
(bei dem adress und port an Ihre Umgebung angepasst ist) mit dem Server
verbinden. Alles, was Sie eingeben, wird an den Server geschickt und von
diesem wieder an Sie zurückgegeben. Um die Verbindung zu trennen, geben
Sie 'quit' ein.
</para>
<programlisting role="php">
<![CDATA[
#!/usr/local/bin/php -q
<?php
error_reporting (E_ALL);
/* Das Skript wartet auf hereinkommende Verbindungsanforderungen. */
set_time_limit (0);
/* Die implizite Ausgabe wird eingeschaltet, so dass man sieht,
* was gesendet wurde. */
ob_implicit_flush ();
$address = '192.168.1.53';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
/* Anweisungen senden. */
$msg = "\nWillkommen auf dem PHP-Testserver. \n" .
"Um zu beenden, geben Sie 'quit' ein. Um den Server herunterzufahren, geben Sie 'shutdown' ein.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($msgsock)) . "\n";
break 2;
}
if (!$buf = trim ($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close ($msgsock);
break 2;
}
$talkback = "PHP: Sie haben '$buf' eingegeben.\n";
socket_write ($msgsock, $talkback, strlen ($talkback));
echo "$buf\n";
} while (true);
socket_close ($msgsock);
} while (true);
socket_close ($sock);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Socket-Beispiel: Einfacher TCP/IP-Client</title>
<para>
Dieses Beispiel zeigt einen einfachen HTTP-Client für eine einmalige
Verbindung. Es wird eine Verbindung zu einer Seite geöffnet,
ein HEAD-Request gesendet, die Antwort zurück übertragen und die
Verbindung wieder geschlossen.
</para>
<programlisting role="php">
<![CDATA[
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP-Verbindung</h2>\n";
/* Den Port für den WWW-Dienst ermitteln. */
$service_port = getservbyname('www', 'tcp');
/* Die IP-Adresse des Zielrechners ermitteln. */
$address = gethostbyname('www.example.com');
/* Einen TCP/IP-Socket erzeugen. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Versuche, zu '$address' auf Port '$service_port' zu verbinden ...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() fehlgeschlagen.\nGrund: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "HTTP HEAD request senden ...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Serverantwort lesen:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Socket schließen ...";
socket_close($socket);
echo "OK.\n\n";
?>
]]>
</programlisting>
</example>
</para>
</chapter>
<!-- 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
-->