Position actuelle: Accueil> Derniers articles> Quelles sont les méthodes d'utilisation détaillées et les étapes de la fonction Stream_Socket_recvFrom?

Quelles sont les méthodes d'utilisation détaillées et les étapes de la fonction Stream_Socket_recvFrom?

gitbox 2025-08-04
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n&#39;a rien à voir avec le contenu de l&#39;article,Par exemple seulement</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à lire cet articlePHPTitoriels。"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * titre:stream_socket_recvfromQuelles sont les méthodes d&#39;utilisation détaillées et les étapes de la fonction??
 *
 * existerPHPmilieu,stream_socket_recvfromest une fonction pour recevoir des données d&#39;une prise de réseau,Généralement utilisé pourUDPou communication de socket sans connexion。
 * 它可以从指定的Prises资源milieu读取数据,Et peut renvoyer les informations d&#39;adresse de la fin d&#39;envoi,Pratique pour réaliser l&#39;interaction des données du réseau。
 *
 * un、Définition de la fonction
 * int stream_socket_recvfrom(resource $socket, int $length, int $flags = 0, string &amp;$address = null)
 *
 * Description du paramètre:
 * - $socket:要从milieu读取数据的Prises资源。
 * - $length:Nombre maximum d&#39;octets lus。
 * - $flags:Facultatif,Drapeaux qui contrôlent le comportement de lecture,défaut0。
 * - &amp;$address:Facultatif,Passer une variable de référence,Utilisé pour recevoir des informations sur l&#39;adresse de la fin d&#39;envoi(IPet ports)。
 *
 * Valeur de retour:
 * Renvoie le nombre réel d&#39;octets lus,Retour à l&#39;échecfalse。
 *
 * deux、Utilisez des étapes et des exemples
 *
 * 1. créerUDPPrises(Peut également être utiliséTCPMais généralementrecvfromPour le protocole sans connexion)
 * 2. 绑定本地地址et ports,Écouter les données
 * 3. Appelstream_socket_recvfromRecevoir des données
 * 4. Traiter les données reçues et l&#39;adresse d&#39;envoi
 *
 * Exemple de code:
 */</span>

</span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_server</span></span><span>(</span><span><span class="hljs-string">"udp://0.0.0.0:9999"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, STREAM_SERVER_BIND);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$socket</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法créerUDPPrises:<span class="hljs-subst">$errstr</span></span></span><span> (</span><span><span class="hljs-subst">$errno</span></span><span>)");
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"UDPLe serveur est démarré,moniteur9999port...\n"</span></span><span>;

</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-literal">true</span></span><span>) {
    </span><span><span class="hljs-variable">$buf</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_recvfrom</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$peer</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$buf</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Recevoir des données失败\n"</span></span><span>;
        </span><span><span class="hljs-keyword">break</span></span><span>;
    }
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Reçu de <span class="hljs-subst">$peer</span></span></span><span> Des données de: </span><span><span class="hljs-subst">$buf</span></span><span>\n";

    </span><span><span class="hljs-comment">// Peut répondre au client selon les besoins</span></span><span>
    </span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-string">"Données reçues:"</span></span><span> . </span><span><span class="hljs-variable">$buf</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">stream_socket_sendto</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-variable">$response</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$peer</span></span><span>);
}

<span class="hljs-comment">/*
 * trois、Notes sur l&#39;utilisation
 * - stream_socket_recvfromConvient aux protocoles sans connexionUDP,TCPLa connexion est polyvalentestream_socket_recv。
 * - Besoin de traiter le retourfalseLa situation,Évitez les exceptions du programme。
 * - $addressLes paramètres sont passés par référence,Informations sur les expéditeurs faciles à obtenir。
 * - Quand le nouveau$lengthTrop grand,Peut affecter les performances,Il est recommandé de le définir raisonnablement en fonction de la taille réelle des données。
 *
 * Résumer:
 * stream_socket_recvfromOuiPHPmilieu处理UDPFonctions communes pour la réception des paquets,Flexible et capable d&#39;obtenir des informations d&#39;envoi,
 * Convient pour une implémentation simpleUDPFonctions de communication serveur ou réseau。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>