stream_socket_server
(PHP 5, PHP 7)
stream_socket_server — Create an Internet or Unix domain server socket
Beschreibung
$local_socket
[, int &$errno
[, string &$errstr
[, int $flags
= STREAM_SERVER_BIND | STREAM_SERVER_LISTEN
[, resource $context
]]]] ) : resource
Creates a stream or datagram socket on the specified
local_socket
.
This function only creates a socket, to begin accepting connections use stream_socket_accept().
Parameter-Liste
-
local_socket
-
The type of socket created is determined by the transport specified using standard URL formatting: transport://target.
For Internet Domain sockets (
AF_INET
) such as TCP and UDP, the target portion of theremote_socket
parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem.Depending on the environment, Unix domain sockets may not be available. A list of available transports can be retrieved using stream_get_transports(). See Liste der unterstützten Socket-Transporter for a list of bulitin transports.
-
errno
-
If the optional
errno
anderrstr
arguments are present they will be set to indicate the actual system level error that occurred in the system-level socket(), bind(), and listen() calls. If the value returned inerrno
is 0 and the function returnedFALSE
, it is an indication that the error occurred before the bind() call. This is most likely due to a problem initializing the socket. Note that theerrno
anderrstr
arguments will always be passed by reference. -
errstr
-
See
errno
description. -
flags
-
A bitmask field which may be set to any combination of socket creation flags.
Hinweis:
For UDP sockets, you must use
STREAM_SERVER_BIND
as theflags
parameter. -
context
-
Beispiele
Beispiel #1 Using TCP server sockets
<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
fclose($conn);
}
fclose($socket);
}
?>
The example below shows how to act as a time server which can respond to time queries as shown in an example on stream_socket_client().
Hinweis: Most systems require root access to create a server socket on a port below 1024.
Beispiel #2 Using UDP server sockets
<?php
$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
die("$errstr ($errno)");
}
do {
$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
echo "$peer\n";
stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while ($pkt !== false);
?>
Anmerkungen
Hinweis: Wenn Sie eine numerische IPv6-Adresse angeben, z.B. fe80::1, müssen Sie die IP in eckige Klammern schreiben, z.B. tcp://[fe80::1]:80.
Siehe auch
- stream_socket_client() - Open Internet or Unix domain socket connection
- stream_set_blocking() - Set blocking/non-blocking mode on a stream
- stream_set_timeout() - Set timeout period on a stream
- fgets() - Liest eine Zeile von der Position des Dateizeigers
- fgetss() - Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags.
- fwrite() - Binär-sicheres Dateischreiben
- fclose() - Schließt einen offenen Dateizeiger
- feof() - Prüft, ob ein Dateizeiger am Ende der Datei steht
- Curl extension
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-stream-socket-server.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.