PHP Handbuch
Zurück |  | Nach vorne

# fsockopen

(PHP 3 <= 3.0.18, PHP 4 >= 4.0.0)

fsockopen -- Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her

## Beschreibung:

``int fsockopen` (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]])`

Öffnet eine Socket-Verbindung zum Internet (AF_INET, unter Verwendung von TCP oder UDP) oder unter Unix (AF_UNIX). Für eine Internet-Verbindung wird eine TCP-Socket-Verbindung zu `hostname` über den Port `port` hergestellt. Für eine UDP-Verbindung müssen Sie das Protokoll `udp://hostname` explizit angeben. Bei einer UNIX-Verbindung wird `hostname` als Socket-Pfad interpretiert, `port` muss in diesem Fall 0 sein. Der optionale Parameter `timeout` kann benutzt werden, um eine Fehlerwartezeit (Timeout-Wert) für den Verbindungsaufbau (in Sekunden) zu setzen.

Die Funktion fsockopen() gibt einen Zeiger auf eine Datei zurück, der in Verbindung mit anderen Datei-Funktionen (wie z.B. fgets(), fgetss(), fputs(), fclose(), feof()) gebraucht werden kann.

Wenn der Aufruf der Funktion scheitert, gibt er `FALSE` / falsch zurück und wenn die optionalen `errno` und `errstr` Argumente vorhanden sind, enthalten sie den aktuellen System-Fehler, der beim Aufruf der System-Funktion `connect()` (Verbindungsaufbau) erscheint bzw. passiert ist. Wenn die erhaltene errno 0 ist und die Funktion `FALSE`/falsch zurück gibt, ist dies ein Hinweis, dass der Fehler vor dem `>connect()`-Aufruf geschah. Das ist ein Problem, dass häufig mit der Initialisierung des Sockets zusammen hängt. Beachten Sie bitte, dass das `errno` und `errstr`-Argument als Referenz zu übergeben sind.

Abhängig von der vorhandenen Umgebung kann die Verbindung zu einer UNIX-Domäne oder der optionale Verbindungsaufbau-Zeitfehler nicht zur Verfügung stehen.

Voreingestellt ist der Verbindungsaufbau im Block-Modus. Sie können dies auf Nicht-Block-Modus ändern, indem Sie socket_set_blocking() benutzen.

Beispiel 1. fsockopen()-Beispiel:
    $fp = fsockopen ("www.php.net", 80, &$errno, &$errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br>\n";
    } else {
        fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
        while (!feof($fp)) {
            echo fgets($fp,128);
        }
        fclose($fp);
    }

Das folgende Beispiel zeigt, wie das Datum und die Zeit des UDP-Service "daytime" (Port 13) von ihrer eigenen Maschine empfangen werden kann:

Beispiel 2. Gebrauch einer UDP-Verbindung:
    <?php
    $fp = fsockopen("udp://127.0.0.1", 13, &$errno; &$errstr);
    if (!$fp) {
        echo "Fehler: $errno - $errstr<br>\n";
    } else {
        fwrite($fp,"\n");
        echo fread($fp, 26);
        fclose($fp);
    }
    ?>

Siehe auch: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() und feof().

Zurück | Zum Anfang | Nach vorne
define_syslog_variables | Nach oben | gethostbyaddr