socket_recvfrom
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_recvfrom — Reçoit des données d'un socket, connecté ou pas
Description
$socket
, string &$buf
, int $len
, int $flags
, string &$name
[, int &$port
] )
La fonction socket_recvfrom() reçoit
len
octets de données du buffer buf
depuis name
sur le port port
(si le socket
n'est pas du type AF_UNIX
), en utilisant
socket
. socket_recvfrom() peut être utilisé
pour récupérer les données depuis des sockets connectées ou non. De plus,
un ou plusieurs drapeaux peuvent être spécifiés pour modifier ce comportement.
Les paramètres name
et port
doivent être passés par référence. Si le socket n'est pas connecté,
name
contiendra l'adresse internet de l'hôte distant ou
le chemin du socket Unix. Si le socket est connecté, name
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
.
Liste de paramètres
-
socket
-
Le paramètre
socket
doit être une ressource de socket créé par la fonction socket_create(). -
buf
-
Les données récupérées seront placées dans la variable spécifiée par ce paramètre.
-
len
-
Jusqu'à
len
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
Processus en dehors de la bande de données. 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 len
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 bloquer. -
name
-
Si le socket est du type
AF_UNIX
,name
sera le chemin vers ce fichier. Sinon, pour les sockets non-connectés,name
est l'adresse IP de l'hôte distant, ouNULL
si le socket est connecté. -
port
-
Cet argument ne s'applique qu'aux sockets
AF_INET
etAF_INET6
, et spécifie le port distant depuis lequel les données sont reçues. Si la socket est connectée,port
vaudraNULL
.
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
error_reporting(E_ALL | E_STRICT);
$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 distant $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.
Historique
Version | Description |
---|---|
4.3.0 | socket_recvfrom() est maintenant compatible avec les données binaires. |
Voir aussi
- socket_recv() - Reçoit des données d'un socket connecté
- socket_send() - Envoie des données à un socket connecté
- socket_sendto() - Envoie un message à un socket, qu'il soit connecté ou pas
- socket_create() - Crée un socket
Version en cache
22/11/2024 22:59:42 Cette version de la page est en cache (à la date du 22/11/2024 22:59:42) 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-socket-recvfrom.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.