fsockopen

(PHP 4, PHP 5)

fsockopenOuvre une socket de connexion Internet ou Unix

Description

resource fsockopen ( string $hostname [, int $port= -1 [, int &$errno [, string &$errstr [, float $timeout= ini_get("default_socket_timeout") ]]]] )

Initialise une connexion par socket � la ressource sp�cifi�e par hostname .

PHP supporte les cibles dans les domaines Internet et Unix comme d�crit dans Liste des modes de transport de sockets disponibles. Une liste des types de transports peut �galement �tre trouv�e en utilisant la fonction stream_get_transports().

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

Liste de param�tres

hostname

Si vous avez compil� le support OpenSSL, vous pouvez pr�fixer le param�tre hostname avec soit 'ssl://' soit 'tls://' pour utiliser une connexion SSL ou TLS avec le client � travers TCP/IP pour connecter l'h�te distant.

port

Le num�ro du port.

errno

Si fourni, contient le num�ro de l'erreur syst�me qui survient lors de l'appel syst�me � connect().

Si la valeur retourn�e par errno est 0 et que la fonction retourne FALSE, ce peut �tre une indication laissant penser que l'erreur est survenue avant l'appel � connect(). La plupart du temps, cela est du � un probl�me d'initialisation du socket.

errstr

Le message d'erreur, sous la forme d'une cha�ne de caract�res.

timeout

Le d�lai d'attente maximal, en secondes.

Note: Si vous avez besoin de d�finir un d�lai limite pour lire/�crire des donn�es � travers cette socket, utilisez la fonction stream_set_timeout(), comme le param�tre timeout de la fonction fsockopen() uniquement appliqu� lors de la connexion de la socket.

Valeurs de retour

fsockopen() retourne un pointeur de fichier qui peut �tre utilis� avec d'autres fonctions fichiers, telles fgets(), fgetss(), fputs(), fclose() et feof(). Si l'appel �choue, la fonction retourne FALSE.

Erreurs / Exceptions

Lance une alerte de type E_WARNING si le param�tre hostname n'est pas un domaine valide.

Historique

Version Description
4.3.0 Ajout du support du param�tre timeout sous les syst�mes win32.
4.3.0 Ajout du support SSL et TLS via TCP/IP.
4.0.0 Ajout du support UDP.

Exemples

Exemple #1 Exemple avec fsockopen()

<?php
$fp 
fsockopen("www.example.com"80$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET / HTTP/1.1\r\n";
    
$out .= "H�te : www.example.com\r\n";
    
$out .= "Connexion : Ferm�e\r\n\r\n";

    
fwrite($fp$out);
    while (!
feof($fp)) {
        echo 
fgets($fp128);
    }
    
fclose($fp);
}
?>

Exemple #2 Utilisation d'une connexion UDP

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.

<?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($fp26);
    
fclose($fp);
}
?>

Notes

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

Avertissement

Les sockets UDP semblent quelques fois avoir �t� ouvertes sans erreur, m�me si l'h�te distant n'est pas accessible. L'erreur appara�t alors uniquement lorsque vous tentez de lire/�crire sur la socket. La raison de cela est que UDP est un protocole "connectionless", ce qui signifie que le syst�me ne tentera pas d'�tablir un lien pour la socket tant qu'il ne doit pas recevoir/envoyer de donn�es.

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.

Voir aussi