7.66 Réseau
7 Index des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes prédefinies . checkdnsrr . closelog . debugger_off . debugger_on . define_syslog_variables . dns_check_record . dns_get_mx . dns_get_record ->fsockopen . gethostbyaddr . gethostbyname . gethostbynamel . getmxrr . getprotobyname . getprotobynumber . getservbyname . getservbyport . ip2long . long2ip . openlog . pfsockopen . socket_get_status . socket_set_blocking . socket_set_timeout . syslog
|
7.66.15 fsockopen()Ouvre une socket de connexion Internet ou Unix[ Exemples avec fsockopen ] PHP 3, PHP 4
int
fsockopen (
string
target
,
int
port
,
int
errno
,
string
errstr
,
float
timeout
)
fsockopen
crée un flôt 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 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.
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
.
|