ブロードキャストメッセージは、特定のデバイスではなく、同じネットワーク内のすべてのデバイスに送信されるメッセージです。これは通常、同じローカルエリアネットワーク(LAN)のすべてのデバイスを、サービスの発見、発表、更新通知など、受信する必要があるシナリオで使用されます。
PHPでは、 socket_sendto関数を使用してブロードキャストメッセージを送信できます。ブロードキャストメッセージの宛先アドレスは通常、ネットワークのブロードキャストアドレス( 255.255.255.255など)であり、UDPプロトコルを使用して送信する必要があります。
ブロードキャストメッセージの送信を実装するには、まずUDPソケットを作成し、 socket_sendto関数を使用してブロードキャストアドレスにメッセージを送信する必要があります。以下は、ブロードキャスト関数を実装するための基本的な手順です。
ソケットの作成: Socket_Createを使用してUDPソケットを作成します。
ブロードキャスト権限の設定: socket_set_optionを介してブロードキャストを有効にします。
ブロードキャストメッセージの送信: socket_sendtoを使用してメッセージを送信します。
ソケットを閉じる:メッセージが送信されたらソケットを閉じます。
socket_sendto関数を使用してブロードキャストメッセージを送信する完全な例を次に示します。
<?php
// aを作成しますUDPソケット
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if (!$socket) {
echo "无法创建ソケット: " . socket_strerror(socket_last_error()) . "\n";
exit;
}
// 设置ソケット选项以允许广播
$opt = 1;
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, $opt);
// ブロードキャストメッセージコンテンツ
$message = "これは放送メッセージです!";
// ブロードキャストアドレスとポート
$broadcastAddress = '255.255.255.255';
$port = 12345;
// ブロードキャストメッセージを送信します
$bytesSent = socket_sendto($socket, $message, strlen($message), 0, $broadcastAddress, $port);
if ($bytesSent === false) {
echo "失敗した送信: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "ブロードキャストメッセージは正常に送信されました!\n";
}
// 关闭ソケット
socket_close($socket);
?>
ソケットの作成: socket_create(af_inet、sock_dgram、sol_udp)は、 udpソケットを作成するために使用されます。
ブロードキャスト許可を設定: socket_set_option($ socket、sol_socket、so_broadcast、1)ブロードキャストオプションを有効にします。
ブロードキャストアドレス: 255.255.255.255は、一般的に使用されるブロードキャストアドレスであり、ローカルネットワーク内のすべてのデバイスを表します。
メッセージの送信: socket_sendto($ socket、$ message、strlen($ message)、0、$ broadcastaddress、$ port)は、ブロードキャストアドレスとポートを介してメッセージを送信します。
ネットワーク構成:ネットワークがブロードキャストを許可することを確認してください。ファイアウォールまたはルーターに制限がある場合、ブロードキャストメッセージの送信が妨げられる可能性があります。
ブロードキャストアドレス:一部のネットワーク構成では、 255.255.255.255.255だけでなく、サブネットのブロードキャストアドレスを使用する必要があります。これは、ネットワークのブロードキャストアドレスを計算することで決定できます。
エラー処理:生産環境で使用する場合、ソケットの作成の故障、メッセージの送信障害など、すべてのエラー状況が適切に処理されていることを確認してください。
ブロードキャストメッセージのアプリケーションシナリオは非常に広く、以下は一般的な使用シナリオです。
LANサービスの発見:デバイスは、ブロードキャストメッセージを通じて、独自の存在のネットワーク上の他のデバイスに通知します。
システム通知:システムの更新、警告メッセージなど、同じネットワーク内のすべてのデバイスに通知を送信します。
リアルタイム更新:ゲームのリアルタイムステータス更新や同期リアルタイムデータストリームなど、すべてのデバイスにデータをブロードキャストします。