<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この部分は、記事の内容とは何の関係もありません,何でもかまいません PHP コードの例</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"プログラムの実行を開始します...\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">"現存在するの時刻:<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">"乱数生成:<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">// テキストセクション:について socket_clear_error 存在する UDP そして TCP ソケットでの使用の違い</span></span><span>
<span class="hljs-comment">/**
* タイトル:socket_clear_error存在するUDPそしてTCPソケットでの使用の違い
*
* PHP 提供された socket_clear_error() 関数,指定されたソケットのエラーステータスをクリアするために使用されます,クリアする前にエラーコードを返します。
* 它常そして socket_last_error() で使用します,エラー処理とデバッグ用。
*
* UDP(User Datagram Protocol)そして TCP(Transmission Control Protocol)存在する网络通信模型上有显著差异,
* したがって socket_clear_error() 使用シナリオとパフォーマンスも異なります。
*
* 1. TCP ソケットの機能
* - 接続指向:存在する通信前需要建立连接(3つの握手)。
* - 信頼できるトランスミッション:パケットが失われたときに自動的に再送信されます。
* - エラーは明らかです:通常、送信または受信エラーはすぐに供給されます。
*
* 存在する TCP ソケット内,書き込み障害が発生した場合、接続の中断や読み取りタイムアウトなどの問題,
* socket_last_error() 特定のエラーコードが返されます。使用 socket_clear_error() これらのエラーコードをクリアできます,
* 後続の操作にきれいな状態を提供します。通常使用されます:
* - 接続の例外をキャッチした後、再試行してください
* - 掃除 socket 次の通信に影響を与える残留エラーを回避するためのステータス
*
* 2. UDP ソケットの機能
* - 接続なし:データを送信する前に正式な接続は確立されていません。
* - 不信頼できるトランスミッション:パケットが紛失または故障している場合があります,契約自体は配信を保証しません。
* - 限られたエラーフィードバック:ほとんどの場合、障害を送信する特定のエラーを直接取得することはできません。。
*
* 存在する UDP ソケット内,送信が失敗しても(たとえば、ターゲットは達成できません),多くのシステムは、すぐにエラーをソケットに返すことはありません。
* したがって socket_last_error() 多くの場合戻ってきます 0,或者仅存在する极少数情况(ローカルネットワークインターフェイスが間違っている場合)エラーコードを返します。
* 右 UDP ソケットコール socket_clear_error() 的效果也相右有限,主に使用されます:
* - 掃除本地套接字状态
* - 確認する socket_last_error() クリーンステータスに戻ります,エラー処理ロジックを簡単に統合できます
*
* 3. 使用の例
*/</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 接続例</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 例を送信します</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">"テストデータ"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-string">"テストデータ"</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 错误码掃除前:<span class="hljs-subst">$tcp_error_before</span></span></span><span>, 掃除后:</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 错误码掃除前:<span class="hljs-subst">$udp_error_before</span></span></span><span>, 掃除后:</span><span><span class="hljs-subst">$udp_error_after</span></span><span>\n";
<span class="hljs-comment">/**
* 要約します:
* - TCP 套接字的错误状态通常そして连接可靠性直接相关,socket_clear_error() 可以有效掃除这些错误。
* - UDP ソケットエラーステータスフィードバックは限られています,socket_clear_error() 主に使用されます保持一致的错误处理机制。
* - 存在する实际开发中,右 TCP そして UDP 使用 socket_clear_error() すべて意味があります,しかし TCP 効果はより明白です。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>