socket_recvfrom
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Reçoit des données d'un socket, connecté ou pas
Description
Les paramètres address et port
doivent être passés par référence. Si le socket n'est pas connecté,
address contiendra l'adresse internet de l'hôte distant ou
le chemin du socket Unix. Si le socket est connecté, address
vaut null. De plus, le paramètre port contiendra
le port de l'hôte distant dans le cas d'un socket AF_INET ou
AF_INET6.
Note:
Cette fonction gère les chaînes binaires.
Liste de paramètres
socket
-
Le paramètre socket doit être une instance
de Socket créé par socket_create().
data
-
Les données récupérées seront placées dans la variable spécifiée
par ce paramètre.
length
-
Jusqu'à length octets doivent être récupérés
de l'hôte distant.
flags
-
La valeur de ce paramètre peut être une combinaison des drapeaux suivants,
joints par un OU binaire (|).
Valeurs possibles pour flags
| Drapeau |
Description |
MSG_OOB |
Traite les données hors bande.
|
MSG_PEEK |
Reçoit les données depuis le début de la file de réception
sans les supprimer de cette file.
|
MSG_WAITALL |
Bloque tant qu'au moins length octets n'ont pas
été reçus. Cependant, si un signal est reçu ou l'hôte distant
se déconnecte, la fonction pourra retourner moins de données.
|
MSG_DONTWAIT |
Lorsque ce drapeau est défini, la fonction retourne des données
même si elle devrait rester bloquée.
|
address
-
Si le socket est du type AF_UNIX,
address sera le chemin vers ce fichier. Sinon,
pour les sockets non-connectés, address est l'adresse
IP de l'hôte distant, ou null si le socket est connecté.
port
-
Cet argument ne s'applique qu'aux sockets AF_INET et
AF_INET6, et spécifie le port distant depuis lequel
les données sont reçues. Si la socket est connectée,
port vaudra null.
Valeurs de retour
socket_recvfrom() retourne le nombre d'octets
reçus, ou false si une erreur survient. Le code erreur actuel peut
être retrouvé en appelant la fonction socket_last_error().
Ce code erreur peut être passé à la fonction socket_strerror()
afin de récupérer une explication textuelle de l'erreur.
Exemples
Exemple #1 Exemple avec socket_recvfrom()
<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 1223);
$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);
echo "Réception de $buf depuis l'adresse distante $from et du port distant $port" . PHP_EOL;
?>
Cet exemple initialise un socket UDP sur le port 1223 de l'adresse
127.0.0.1 et affiche au moins 12 caractères reçus depuis l'hôte distant.