fsockopen
(PHP 4, PHP 5, PHP 7)
fsockopen — Ouvre un socket de connexion Internet ou Unix
Description
$hostname
[, int $port
= -1
[, int &$errno
[, string &$errstr
[, float $timeout
= ini_get("default_socket_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().
Le socket sera ouvert par défaut en mode bloquant. Vous pouvez changer de mode en utilisant : stream_set_blocking().
La fonction stream_socket_client() est similaire mais fournit plus d'options, incluant la connexion non-bloquante et la possibilité de fournir un contexte de flux.
Liste de paramètres
-
hostname
-
Si le support OpenSSL est installé, vous pouvez préfixer
hostname
avec ssl:// ou tls:// pour utiliser une connexion cliente SSL ou TLS sur TCP/IP pour vous connectez à l'hôte distant. -
port
-
Le numéro du port. Ce paramètre peut être omis et ignoré en utilisant la valeur -1 pour les transports qui n'utilisent pas les ports, comme unix://.
-
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 retourneFALSE
, 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 ce socket, utilisez la fonction stream_set_timeout(), car le paramètre
timeout
de la fonction fsockopen() est uniquement appliqué lors de la connexion du 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.
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 .= "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);
}
?>
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é ouverts 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 le 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 le 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 un socket de connexion Internet ou Unix persistante
- stream_socket_client() - Ouvre une connexion socket Internet ou Unix
- 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
- socket_connect() - Crée une connexion sur un socket
- L'extension Curl
Version en cache
26/12/2024 14:41:22 Cette version de la page est en cache (à la date du 26/12/2024 14:41:22) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-fsockopen.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.