(PHP 5)
stream_socket_recvfrom — Lit des données depuis une socket, connectée ou pas
stream_socket_recvfrom() accepte les données depuis une socket distante, jusqu'à un total de length octets. Si le paramètre address est fourni, il recevra l'adresse de la socket distante.
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 la socket, mais n'utilise pas le buffer. Les prochains appels à fread() ou stream_socket_recvfrom() liront les mêmes données. |
Exemple #1 Exemple avec stream_socket_recvfrom()
<?php
/* Ouvre une socket sur le port 1234 de localhost */
$server = stream_socket_server('tcp://127.0.0.1:1234');
/* Accepte une connexion */
$socket = stream_socket_accept($server);
/* Lit un paquet (1500 est la taille classique MTU) de données OOB */
echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";
/* Lit les données normales in-band, mais ne modifie rien */
echo "Data: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";
/* Relit le même paquet, mais vide le buffer. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n";
/* Terminaison */
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ée (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.
Voir aussi stream_socket_sendto(), stream_socket_client() et stream_socket_server().