Manuel PHP
Précédent |  | Suivant

# fsockopen

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

fsockopen -- Ouvre une socket de connexion Internet ou Unix.

## Description

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

fsockopen() crée un flot de connexion à l'Internet (AF_INET) ou à un domaine Unix (AF_UNIX). Via Internet, cette fonction va ouvrir une socket de connexion TCP avec l'hôte `hostname` sur le port `port`. Pour les connexions UDP, vous devez explicitement spécifier le protocole : `udp://hostname`. Via un domaine Unix, `hostname` représente le chemin jusqu'à la socket, et `port` doit être mis à 0. L'option `timeout` sert à donner une durée maximale à cet appel.

fsockopen() retourne un pointeur de fichier qui peut être utilisé avec d'autres fonctions fichiers, telles que fgets(), fgetss(), fputs(), fclose() et feof().

Si l'appel échoue, fsockopen() retourne `FALSE`, et si les options `errno` et `errstr` ont été fournies, elles contiennent désormais les raisons de l'échec. Si l'erreur retournée est 0 et que la fonction retourne `FALSE`, c'est une indication d'erreur. C'est probablement du à une erreur d'initialisation de la socket. Notez que `errno` et `errstr` sont passées par référence.

Suivant les environnements, le type 'domaine Unix' ou l'option `timeout` ne sont pas toujours disponibles.

La socket sera ouverte par défaut en mode bloquant. Vous pouvez changer de mode en utilisant : socket_set_blocking().

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

L'exemple ci-dessous décrit comment lire la date et l'heure grâce à un service UDP "daytime" (port 13), sur votre propre machine.

Exemple 2. Utilisation d'une connexion UDP
    <?php
    $fp = fsockopen("udp://127.0.0.1", 13, &$errno, &$errstr);
    if (!$fp) {
        echo "ERREUR: $errno - $errstr<br>\n";
    } else {
        fwrite($fp,"\n");
        echo fread($fp, 26);
        fclose($fp);
    }
    ?>

> Note : Le paramètre `timeout` a été introduit en PHP 3.0.9 et le support UDP en PHP 4.

Voir aussi pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() et feof().

Précédent | Sommaire | Suivant
define_syslog_variables | Niveau supérieur | gethostbyaddr