fsockopen
(PHP 4, PHP 5)
fsockopen — Ouvre une socket de connexion Internet ou Unix
Description
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.
Erreurs / Exceptions
Lance une alerte de type E_WARNING si le param�tre hostname n'est pas un domaine valide.
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. |
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.
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() - Ouvre une socket de connexion Internet ou Unix persistante
- stream_set_blocking() - Configure le mode bloquant d'un flux
- stream_set_timeout() - Configure la dur�e d'expiration d'un flux
- fgets() - R�cup�re la ligne courante sur laquelle se trouve le pointeur du fichier
- fgetss() - Renvoie la ligne courante du fichier et �limine les balises HTML
- fwrite() - �crit un fichier en mode binaire
- fclose() - Ferme un fichier
- feof() - Teste la fin du fichier
- L'extension Curl