<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n'a rien à voir avec le contenu de l'article,Peut être n'importe quel PHP Exemple de code</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Commencez à exécuter le programme...\n"</span></span><span>;
</span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Heure actuelle:<span class="hljs-subst">$time</span></span></span><span>\n";
</span><span><span class="hljs-variable">$randomNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Génération de nombres aléatoires:<span class="hljs-subst">$randomNumber</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Section de texte:à propos socket_clear_error exister UDP et TCP Différences d'utilisation dans les sockets</span></span><span>
<span class="hljs-comment">/**
* titre:socket_clear_errorexisterUDPetTCPDifférences d'utilisation dans les sockets
*
* PHP Fourni socket_clear_error() fonction,Utilisé pour effacer l'état d'erreur sur une prise spécifiée,et renvoyez le code d'erreur avant de nettoyer。
* 它常et socket_last_error() Utiliser avec,Pour la gestion des erreurs et le débogage。
*
* UDP(User Datagram Protocol)et TCP(Transmission Control Protocol)exister网络通信模型上有显著差异,
* donc socket_clear_error() Les scénarios d'utilisation et les performances sont également différents。
*
* 1. TCP Caractéristiques des prises
* - Axé sur la connexion:exister通信前需要建立连接(Trois poignées de main)。
* - Transmission fiable:Retransmet automatiquement lorsque les paquets sont perdus。
* - L'erreur est claire:Toute erreur d'envoi ou de réception sera généralement immédiatement renvoyée。
*
* exister TCP Dans la douille,Si une défaillance d'écriture se produit、Des problèmes tels que l'interruption de connexion ou le délai d'expiration,
* socket_last_error() Le code d'erreur spécifique sera renvoyé。utiliser socket_clear_error() Ces codes d'erreur peuvent être effacés,
* Fournit un état propre pour les opérations suivantes。Généralement utilisé pour:
* - Réessayer après avoir attrapé l'exception de connexion
* - Nettoyer socket Statut pour éviter les erreurs résiduelles affectant la communication suivante
*
* 2. UDP Caractéristiques des prises
* - Pas de connexion:Aucune connexion formelle n'est établie avant d'envoyer des données。
* - 不Transmission fiable:Les paquets peuvent être perdus ou hors service,L'accord lui-même ne garantit pas la livraison。
* - Rétroaction d'erreur limitée:Dans la plupart des cas, l'erreur spécifique de l'échec de l'envoi ne peut pas être directement obtenue.。
*
* exister UDP Dans la douille,Même si l'envoi échoue(Par exemple, la cible est inaccessible),De nombreux systèmes ne renvoient pas immédiatement les erreurs aux sockets。
* donc socket_last_error() Retourne souvent 0,或者仅exister极少数情况(Si l'interface du réseau local est erronée)Renvoie le code d'erreur。
* droite UDP Cale socket_clear_error() 的效果也相droite有限,Principalement utilisé pour:
* - Nettoyer本地套接字状态
* - s'assurer socket_last_error() Revenir à l'état propre,Logique de gestion des erreurs facile à unifier
*
* 3. utiliser示例
*/</span>
</span><span><span class="hljs-variable">$tcp_socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_create</span></span><span>(AF_INET, SOCK_STREAM, SOL_TCP);
</span><span><span class="hljs-variable">$udp_socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_create</span></span><span>(AF_INET, SOCK_DGRAM, SOL_UDP);
</span><span><span class="hljs-comment">// TCP Exemple de connexion</span></span><span>
@</span><span><span class="hljs-title function_ invoke__">socket_connect</span></span><span>(</span><span><span class="hljs-variable">$tcp_socket</span></span><span>, </span><span><span class="hljs-string">"127.0.0.1"</span></span><span>, </span><span><span class="hljs-number">8080</span></span><span>);
</span><span><span class="hljs-variable">$tcp_error_before</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$tcp_socket</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">socket_clear_error</span></span><span>(</span><span><span class="hljs-variable">$tcp_socket</span></span><span>);
</span><span><span class="hljs-variable">$tcp_error_after</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$tcp_socket</span></span><span>);
</span><span><span class="hljs-comment">// UDP Envoyer un exemple</span></span><span>
@</span><span><span class="hljs-title function_ invoke__">socket_sendto</span></span><span>(</span><span><span class="hljs-variable">$udp_socket</span></span><span>, </span><span><span class="hljs-string">"Tester les données"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-string">"Tester les données"</span></span><span>), </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-string">"127.0.0.1"</span></span><span>, </span><span><span class="hljs-number">8081</span></span><span>);
</span><span><span class="hljs-variable">$udp_error_before</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$udp_socket</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">socket_clear_error</span></span><span>(</span><span><span class="hljs-variable">$udp_socket</span></span><span>);
</span><span><span class="hljs-variable">$udp_error_after</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$udp_socket</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"TCP 错误码Nettoyer前:<span class="hljs-subst">$tcp_error_before</span></span></span><span>, Nettoyer后:</span><span><span class="hljs-subst">$tcp_error_after</span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"UDP 错误码Nettoyer前:<span class="hljs-subst">$udp_error_before</span></span></span><span>, Nettoyer后:</span><span><span class="hljs-subst">$udp_error_after</span></span><span>\n";
<span class="hljs-comment">/**
* Résumer:
* - TCP 套接字的错误状态通常et连接可靠性直接相关,socket_clear_error() 可以有效Nettoyer这些错误。
* - UDP Les commentaires d'état d'erreur de prise sont limités,socket_clear_error() Principalement utilisé pour保持一致的错误处理机制。
* - exister实际开发中,droite TCP et UDP utiliser socket_clear_error() Tous significatifs,mais TCP L'effet est plus évident。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>