Nom de la fonction: stream_socket_recvfrom ()
Fonction Description: La fonction Stream_Socket_RecVFrom () reçoit des données de la prise et renvoie les données reçues.
Version applicable: PHP 5> = 5.3.0, php 7
Syntaxe: stream_socket_recvfrom (Resource $ socket, int $ length [, int $ flags = 0 [, string & $ adresse]]): chaîne | false
paramètre:
- $ socket: requis, représente une ressource de socket ouverte qui peut être créée via la fonction Stream_Socket_Client () ou Stream_Socket_Server ().
- $ Longueur: requis, indiquant la durée maximale des données à recevoir.
- $ Flags: facultatif, utilisé pour spécifier des options supplémentaires lors de la réception de données.
- $ Adresse: Facultatif, utilisé pour stocker l'adresse IP et le numéro de port de l'expéditeur.
Valeur de retour: renvoie les données reçues lors du succès et renvoie false en cas d'échec.
Exemple:
- Recevoir des données et imprimer:
$ socket = stream_socket_client ("udp: //127.0.0.1: 1234", $ errno, $ errstr); if (! $ socket) {echo "La connexion a échoué: $ errstr ($ errno)"; } else {$ data = stream_socket_recvfrom ($ socket, 1024); Echo "Données reçues: $ DATA"; fclose ($ socket); }
- Recevez des données et obtenez l'adresse IP et le numéro de port de l'expéditeur:
$ socket = stream_socket_server ("udp: //127.0.0.1: 1234", $ errno, $ errstr, stream_server_bind); if (! $ socket) {echo "n'a pas réussi à démarrer le serveur: $ erstr ($ errno)"; } else {$ client = stream_socket_accept ($ socket); $ data = stream_socket_recvfrom ($ client, 1024, 0, $ adresse); Echo "Données reçues: $ DATA"; Echo "Adresse de l'expéditeur: $ Adresse"; fclose ($ client); fclose ($ socket); }
Notes:
- La fonction Stream_Socket_RecvFrom () ne convient que pour les protocoles de transport qui prennent en charge les sockets de flux (tels que TCP, UDP).
- Lorsque vous utilisez le protocole UDP, vous devez spécifier le préfixe du protocole "udp: //" lors de la création du socket.
- Si le paramètre d'adresse $ est spécifié, la fonction stocke l'adresse IP et le numéro de port de l'expéditeur dans la variable.
- Le paramètre de longueur $ spécifie la longueur maximale des données à recevoir. Si la longueur de données réelle reçue dépasse cette valeur, seule une partie des données sera renvoyée.
- Le paramètre $ Flags peut être utilisé pour spécifier des options lors de la réception de données. Les options communes incluent MSG_WAITALL (attendez que les données de la longueur spécifiées soient reçues) et msg_dontwait (mode non bloquant).
- Avant de recevoir des données, vous devez créer une ressource de socket, qui peut être créée à l'aide des fonctions Stream_Socket_Client () ou Stream_Socket_Server ().