8.83 Réseau
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . 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 . inet_ntop . inet_pton . ip2long . long2ip . openlog . pfsockopen . socket_get_status . socket_set_blocking . socket_set_timeout . syslog
|
8.83.15 fsockopen()Ouvre une socket de connexion Internet ou Unix[ Exemples avec fsockopen ] PHP 3, PHP 4, PHP 5
resource
fsockopen (
string
target
,
int
port
,
int
errno
,
string
errstr
,
float
timeout
)
Initalise une connexion par socket à la ressource spécifiée par
target
. PHP supporte les cibles
dans les domaines Internet et Unix comme décrit dans
Liste des modes de transports de sockets disponibles . Une liste des types de transports peut également
être trouvée en utilisant la fonction
stream_get_transports
.
| 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.
|
Depuis PHP 4.3.0, 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.
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,
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
dû à une erreur d'initialisation de la socket. Notez que
errno
et
errstr
sont
toujours 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 :
stream_set_blocking
.
| Exemple avec fsockopen |
<?php $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out); 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); } ?>
|
| Attention | |
Les sockets UDP semblent quelques fois avoir été ouvertes sans erreur,
même si l'hôte distant n'est pas joignable. L'erreur apparaît alors
uniquement lorsque vous tentez de lire/écrire sur la socket.
La raison de cela est qu'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
.
|
| 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
,
fwrite
,
fclose
,
feof
et
l'extension Curl .
|