Manuel PHP
Précédent |  | Suivant

# fsockopen

(PHP 3, PHP 4 , PHP 5)

fsockopen -- Ouvre une socket de connexion Internet ou Unix

## Description

resource fsockopen ( string target, int port [, int errno [, string errstr [, float timeout]]])

fsockopen() crée un flux 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 : stream_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); } ?>`

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

Précédent | Sommaire | Suivant
dns_get_record | Niveau supérieur | gethostbyaddr