dns_get_record
gethostbyaddr
Fonctions réseaux
PHP Manual

# fsockopen

(PHP 4, PHP 5)

fsockopen — Ouvre une socket de connexion Internet ou Unix

### Description

resource fsockopen ( string `$hostname` [, int `$port` [, int `&$errno` [, string `&$errstr` [, float `$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`.

### 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.
3.0.9 | Ajout du paramètre `timeout` .

### Exemples

Exemple #1 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 .= "Hôte : www.example.com\r\n";
$out .= "Connexion : Fermée\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
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($fp, 26);
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

- pfsockopen()
- stream_set_blocking()
- stream_set_timeout()
- fgets()
- fgetss()
- fwrite()
- fclose()
- feof()
- L'extension Curl

dns_get_record
gethostbyaddr
Fonctions réseaux
PHP Manual