(PHP 5, PHP 7, PHP 8)
stream_socket_recvfrom — Lit des données depuis un socket, connecté ou pas
$socket
,$length
,$flags
= 0,&$address
= null
stream_socket_recvfrom() accepte les données depuis un socket distant, jusqu'à un total de length
octets.
socket
Le socket distant.
length
Le nombre d'octets à recevoir de socket
.
flags
La valeur de flags
peut être la combinaison des constantes suivantes :
STREAM_OOB | Traite les données en mode OOB (out-of-band ). |
STREAM_PEEK | Lit des données depuis le socket, mais n'utilise pas le buffer. Les prochains appels à fread() ou stream_socket_recvfrom() liront les mêmes données. |
address
Si le paramètre address
est fourni, il recevra l'adresse du socket distant.
Retourne les données lues, sous forme de chaîne de caractères, ou false
si une erreur survient.
Exemple #1 Exemple avec stream_socket_recvfrom()
<?php
$server = stream_socket_server('tcp://127.0.0.1:1234');
$socket = stream_socket_accept($server);
echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";
echo "Data: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";
echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n";
fclose($socket);
fclose($server);
?>
Note:
Si le message reçu est plus grand que
length
, les données supplémentaires peuvent être détruites, suivant le type de socket utilisé (par exemple UDP).
Note:
L'appel de stream_socket_recvfrom() sur les flux basés sur le socket, après l'appel de fonctions de flux basé sur un tampon (comme fread() ou stream_get_line()) lit directement les données à partir du socket et évite l'utilisation du tampon avec le flux.