Я отправляю многоадресную рассылку через PHP (v7.0.8-5), пока это выглядит хорошо.
Моя проблема в том, что я не могу получить пакет.
КОД ХОРОШО, работает без брандмауэра
это код
<?php
error_reporting(E_ALL | E_STRICT);
$mesg = "123456789012" ; //the msg i want to send
$ip = "228.5.6.7"; //the ip to send
$port = 14446 ; //the port to send
//build the socket
$grpparms = array("group"=>$ip,"interface"=>"eth0") ;
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock,IPPROTO_IP,MCAST_JOIN_GROUP,$grpparms);
if($argv[1] == 'r'){ //read multicasts
$from = '';
$dest_port = 0;
$binded = socket_bind($sock, '0.0.0.0',$port);
socket_recvfrom($sock, $buf, 12, 0, $from, $dest_port);
echo "Received $buf from remote address $from and remote port $dest_port" . PHP_EOL;
}
if ($argv[1] =='w'){ //write multicasts
socket_sendto($sock, $mesg, strlen($mesg), 0, $ip,$port);
echo "Send '$mesg' to $ip at port $port".PHP_EOL;
socket_close($sock) ;
}
?>
Я называю это параметром «r» для чтения / получения и «w» для отправки / записи многоадресных сообщений.
Я запускаю этот сценарий поверх ssh на двух разных малинах (версии 2b) на одном и том же коммутаторе. Один с ‘r’, а другой с ‘w’.
Я не могу проверить это прямо сейчас, но изменить $dest_port
в socket_recvfrom()
в $port
или измените значение $dest_port
от 0
в 14446
и попробуйте еще раз, пожалуйста.
Других решений пока нет …