Function.socket-create-pair

Aus PHP-Wiki

Wechseln zu: Navigation, Suche
Basistarif der PKV und Rechtsschutzversicherung Vergleichen OnlineKreditkarten Vergleichen Online - Kostenloser Kreditkartenvergleich . Autoversicherung

socket_create_pair — Erzeugt ein Paar nicht zu unterscheidender Sockets und speichert sie in einem Array.

Inhaltsverzeichnis

Beschreibung

bool socket_create_pair ( int $domain , int $type , int $protocol , array &$fd )


socket_create_pair() erzeugt zwei nicht unterscheidbare, verbundene Sockets und speichert sie im Array fd . Diese Funktion wird allgemein bei der Inter-Prozess-Kommunikation (IPC) verwendet.

Parameter-Liste

domain
  • Der Parameter domain bestimmt die Protokollfamilie, die von den Sockets benutzt werden. Eine komplette Liste finden Sie bei der Funktion socket_create().
type
  • Der Parameter type bestimmt den Kommuunikationstyp, den die Sockets verwenden sollen. Eine komplette Liste finden Sie bei der Funktion socket_create().
protocol
  • Der Parameter protocol setzt das spezifische Protokoll innerhalb der angegebenen domain , das vom zurückgegebenen Socket für die Kommunikation benutzt wird. Der passende Wert kann ermittelt werden, indem der Name an die Funktion getprotobyname()übergeben wird. Wenn TCP oder UDP gewünscht werden, können auch die entsprechenden Konstanten SOL_TCP oder SOL_UDP benutzt werden. Eine vollständige Liste aller unterstützter Protokolle finden Sie bei der Funktion socket_create().
fd
  • Referenz auf das Array, in das die beiden Socket-Deskriptoren eingefügt werden.

Rückgabewerte

Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

Beispiele

Beispiel #1 socket_create_pair() Beispiel

<?php
$sockets = array();
/* Setup socket pair */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
/* Send and Recieve Data */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
    echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ) === false) {
    echo "socket_read() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
 
/* Sockets schliessen */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>

Beispiel #2 socket_create_pair() IPC Beispiel

<?php
$ary = array();
$strone = 'Nachricht vom Elternprozess.';
$strtwo = 'Nachricht vom Kindprozess.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Konnte keinen Kindprozess erzeugen.';
} elseif ($pid) {
    /* Elternprozess */
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
        echo "Empfangen: $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /*child*/
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() fehlgeschlagen. Grund: ".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
        echo "Empfangen: $strone\n";
    }
    socket_close($ary[0]);
}
?>

Siehe auch

Persönliche Werkzeuge