2016-07-22 36 views
1

I Multicast über PHP (v7.0.8-5) das sieht gut aus so weit senden. the capurted packed, on second PC without Firewallerhalten Multicasts mit PHP7 auf Himbeere

Mein Problem ist, dass ich die Pakete nicht empfangen kann.

CODE ist gut, ohne Firewall arbeiten

dies der Code ist.

<?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) ; 
} 
?> 

Ich nenne es mit dem Paramter 'r' lesen/empfangen und mit 'w'/Schreib-Multicasts zu senden.

beginne ich dieses Skript über ssh auf zwei verschiedene raspberrys (Vers. 2b) auf dem gleichen Schalter. Eins mit "r" und das andere mit "w".

Antwort

0

Ich kann es nicht testen, mich gerade jetzt, aber $dest_port in socket_recvfrom()-$port ändern oder den Wert von $dest_port0-14446 ändern und versuchen Sie es erneut bitte.

+0

fand ich das Misstake, war es die Firewall. Der aufrechte Code ist korrekt. –