fsockopen

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)

 
;

 
}

 
?



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