fsockopen

(PHP 3, PHP 4 )

fsockopen -- Ouvre une socket de connexion Internet ou Unix

Description

int fsockopen ( string target, int port [, int errno [, string errstr [, float timeout]]])

fsockopen() crée un flux 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 target sur le port port. Pour les connexions UDP, vous devez explicitement spécifier le protocole : udp://target. Via un domaine Unix, target 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 : Lors de la spécification d'adresses IPv6 au format numérique (e.g. fe80::1) vous devez placer l'adresse IP entre crochets. Par exemple : tcp://[fe80::1]:80.

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().