Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

socket_create_pair

Socket-Funktionen

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


    Parameter-Liste:
NameBeschreibung
domainDer Parameter domain bestimmt die Protokollfamilie, die von den Sockets benutzt werden. Eine komplette Liste finden Sie bei der Funktion socket_create().
typeDer Parameter type bestimmt den Kommunikationstyp, den die Sockets verwenden sollen. Eine komplette Liste finden Sie bei der Funktion socket_create().
protocolDer 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().
fdReferenz auf das Array, in das die beiden Socket-Deskriptoren eingefügt werden.

    Rückgabewerte:
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

    Beschreibung:
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.


    Aktiv in Version:
(PHP 4 >= 4.1.0, PHP 5, PHP 7)

    Siehe auch:
Erzeugt einen Socket (Endpunkt für die Kommunikation)
 
Öffnet einen Socket, um Verbindungen über einem gegebenen Port aufzubauen
 
Verknüpft einen Socket mit einem Namen
 
Hört einen Socket nach Verbindungsanforderungen ab
 
Gibt den letzten Fehler zurück, der an einem Socket aufgetreten ist
 
Gibt einen String zurück, der einen socket-Fehler beschreibt
 

socket_bind() - Beispiel:


Eingabe:
<?PHP
$sockets = array();

/* Unter Windows muss man AF_INET benutzen */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);

/* Socket-Paar erzeugen */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair fehlgeschlagen. Grund: ".socket_strerror(socket_last_error());
}
/* Daten senden und empfangen */
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]);
?>


Beschreibung:
Version Beschreibung
5.3.0 Diese Funktion wurde für Windows-Plattformen wieder reaktiviert.
4.3.0 Diese Funktion wurde aufgrund eines Fehlers für Windows deaktiviert.
socket_bind() - Beispiel 2:


Eingabe:
<?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 {
    /* Kindprozess */
    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]);
}
?>


Beschreibung:
Version Beschreibung
5.3.0 Diese Funktion wurde für Windows-Plattformen wieder reaktiviert.
4.3.0 Diese Funktion wurde aufgrund eines Fehlers für Windows deaktiviert.
Socket-Funktionen