Hallo CentOS / php Freaks,
ich habe einen UDP Empfangsbaustein (278) hochgeladen. Wie dort schon beschrieben klappt leider der UDP Multicast-Empfang nicht. Ich bin nun schon 3 Nächte mehr oder weniger komplett drangesessen und nicht weitergekommen. Praktisch der gleiche Code funktioniert unter Windows mit XXAMP (der interface name muss in Windows anders sein).
Liegt es an meiner VM (eventuell kann jemand den Baustein auf seiner Hardware testen, ich habe MulticastTestTool.NET Lite verwendet)?
Liegt es an CentOS?
Liegt es einfach an meinem Unvermögen?
Bin auf dem Gebiet erst mit EDOMI als völliger Laie eingestiegen.
Winni
Achja:
echo 2 > /proc/sys/net/ipv4/conf/eth0/rp_filter
und ändern von /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 2
mit
service network restart
hab ich schon ausprobiert
ich habe einen UDP Empfangsbaustein (278) hochgeladen. Wie dort schon beschrieben klappt leider der UDP Multicast-Empfang nicht. Ich bin nun schon 3 Nächte mehr oder weniger komplett drangesessen und nicht weitergekommen. Praktisch der gleiche Code funktioniert unter Windows mit XXAMP (der interface name muss in Windows anders sein).
PHP-Code:
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if (!$socket) return;
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
$gruppe=array("group" => '234.6.6.6',"interface" => 0);
socket_set_option($socket, IPPROTO_IP, MCAST_JOIN_GROUP, $gruppe);
echo 'Fehler? Option'.socket_last_error($socket);
if (!socket_bind($socket, 0, '9050')) return;
echo 'multicast';
echo 'gestartet';
$data = 0;
$sendip = 0;
$sendport = 0;
while($data == 0) {
echo 'lesen';
socket_recvfrom($socket, $data, 50, 0, $sendip, $sendport);
echo 'gelesen';
echo $data;
usleep(1000*10); //CPU-Last verteilen (die Länge der Pause sollte je nach Bedarf angepasst werden - je länger, desto ressourcenschonender)
return;};
socket_close($socket);
Liegt es an CentOS?
Liegt es einfach an meinem Unvermögen?
Bin auf dem Gebiet erst mit EDOMI als völliger Laie eingestiegen.
Winni
Achja:
echo 2 > /proc/sys/net/ipv4/conf/eth0/rp_filter
und ändern von /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 2
mit
service network restart
hab ich schon ausprobiert
Kommentar