방송 메시지는 특정 장치가 아닌 동일한 네트워크의 모든 장치에 전송 된 메시지입니다. 이는 일반적으로 서비스 검색, 공지 사항 또는 업데이트 알림과 같은 동일한 지역 네트워크 (LAN)의 모든 장치를 수신 해야하는 시나리오에서 사용됩니다.
PHP에서는 Socket_sendto 함수를 사용하여 방송 메시지를 보낼 수 있습니다. 방송 메시지의 대상 주소는 일반적으로 네트워크의 방송 주소 (예 : 255.255.255.255 )이며 UDP 프로토콜을 사용하여 전송해야합니다.
방송 메시지 전송을 구현하려면 먼저 UDP 소켓을 생성 한 다음 Socket_Sendto 함수를 사용하여 방송 주소로 메시지를 보냅니다. 다음은 방송 기능을 구현하기위한 기본 단계입니다.
소켓 생성 : socket_create를 사용하여 UTP 소켓을 만듭니다.
방송 권한 설정 : socket_set_option을 통해 방송을 활성화합니다.
방송 메시지 보내기 : socket_sendto를 사용하여 메시지를 보냅니다.
닫기 소켓 : 메시지가 전송 된 후 소켓을 닫습니다.
다음은 socket_sendto 함수를 사용하여 방송 메시지를 보내는 전체 예입니다.
<?php
// aUDP소켓
$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 : Socketcreate (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 Service Discovery :이 장치는 방송 메시지를 통해 자신의 존재를 네트워크의 다른 장치에 알립니다.
시스템 알림 : 시스템 업데이트, 경고 메시지 등과 같은 동일한 네트워크의 모든 장치에 알림을 전송합니다.
실시간 업데이트 : 게임의 실시간 상태 업데이트 또는 동기화 된 실시간 데이터 스트림과 같은 모든 장치에 데이터를 방송합니다.