Aktueller Standort: Startseite> Neueste Artikel> Was sind die detaillierten Verwendungsmethoden und Schritte der Funktion von Stream_Socket_Recvfrom?

Was sind die detaillierten Verwendungsmethoden und Schritte der Funktion von Stream_Socket_Recvfrom?

gitbox 2025-08-04
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Zum Beispiel nur</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen, um diesen Artikel zu lesenPHPTutorial -Artikel。"</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">/*
 * Titel:stream_socket_recvfromWas sind die detaillierten Verwendungsmethoden und -schritte der Funktion??
 *
 * existierenPHPMitte,stream_socket_recvfromist eine Funktion zum Empfangen von Daten aus einer Netzwerkbuchse,Normalerweise verwendet fürUDPoder verbindungslose Sockelkommunikation。
 * 它可以从指定的Steckdosen资源Mitte读取数据,Und kann die Adressinformationen des Senden -Endes zurückgeben,Bequem, Netzwerkdateninteraktion zu realisieren。
 *
 * eins、Funktionsdefinition
 * int stream_socket_recvfrom(resource $socket, int $length, int $flags = 0, string &amp;$address = null)
 *
 * Parameterbeschreibung:
 * - $socket:要从Mitte读取数据的Steckdosen资源。
 * - $length:Maximale Anzahl der gelesenen Bytes。
 * - $flags:Optional,Flaggen, die das Lesenverhalten steuern,Standard0。
 * - &amp;$address:Optional,Übergeben einer Referenzvariablen,Wird verwendet, um Adressinformationen zum Sendenende zu erhalten(IPund Ports)。
 *
 * Rückgabewert:
 * Gibt die tatsächliche Anzahl der gelesenen Bytes zurück,Rückkehr auf Fehlerfalse。
 *
 * zwei、Verwenden Sie Schritte und Beispiele
 *
 * 1. erstellenUDPSteckdosen(Kann auch verwendet werdenTCPAber normalerweiserecvfromFür verbindungsloses Protokoll)
 * 2. 绑定本地地址und Ports,Hören Sie sich Daten an
 * 3. Anrufstream_socket_recvfromDaten empfangen
 * 4. Verarbeiten Sie die empfangenen Daten und senden Sie die Adresse
 *
 * Beispielcode:
 */</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">"无法erstellenUDPSteckdosen:<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">"UDPDer Server wird gestartet,Monitor9999Hafen...\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">"Daten empfangen失败\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">"Erhalten von <span class="hljs-subst">$peer</span></span></span><span> Daten von: </span><span><span class="hljs-subst">$buf</span></span><span>\n";

    </span><span><span class="hljs-comment">// Kann nach Bedarf auf den Kunden reagieren</span></span><span>
    </span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-string">"Daten empfangen:"</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">/*
 * drei、Anmerkungen zur Verwendung
 * - stream_socket_recvfromGeeignet für verbindungslose ProtokolleUDP,TCPDie Verbindung ist Mehrzweckstream_socket_recv。
 * - Return verarbeiten müssenfalseDie Situation,Vermeiden Sie Programmausnahmen。
 * - $addressParameter werden mit Referenz übergeben,Einfach zu erhalten Absenderinformationen。
 * - Wenn das eingehende$lengthZu groß,Kann die Leistung beeinflussen,Es wird empfohlen, es angemessen gemäß der tatsächlichen Datengröße festzulegen。
 *
 * Zusammenfassen:
 * stream_socket_recvfromJaPHPMitte处理UDPHäufige Funktionen für den Paketempfang,Flexibel und in der Lage, Informationen zu senden,
 * Geeignet für eine einfache ImplementierungUDPServer- oder Netzwerkkommunikationsfunktionen。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>