Forum: PC-Programmierung [PHP] Socket UDP Broadcast funktioniert nicht


von Rene K. (xdraconix)


Lesenswert?

Ich bekomme über PHP kein Broadcast hinaus (oder ich weiß nicht genau ob 
das Python Script es empfängt). Wenn ich die IP Adresse des Ziels direkt 
eingebe und die Socket Option SO_BROADCAST hinausnehme funktioniert dies 
tadellos.

Mein PHP Code ist folgender:
1
<?php
2
  $ip = "192.168.255.255";
3
  $port = 20001;
4
  $str = "90";
5
6
  $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
7
  socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
8
  socket_sendto($sock, $str, strlen($str), 0, $ip, $port);
9
10
  socket_recvfrom($sock, $buf, 1000, 0, $ip, $port);
11
  echo "Messagge : < $buf > , $ip : $port <br>";
12
13
  socket_close($sock);
14
?>

Die Ziel IP Adresse ist die 192.168.177.3 - diese Addresse liegt 
außerhalb des IP Bereiches auf dem der Webserver läuft, dieser läuft auf 
192.168.178.5 und ist via VPN angebunden. Kann es sein das über den 
Router / VPN keine Broadcasts nach außen gehen?

von foobar (Gast)


Lesenswert?

Du denkst, 192.168.255.255 wäre eine Broadcast-Adresse (das Netz wäre 
dann 192.168.0.0/16), die folgenden Adressen 192.168.177.3 und 
192.168.178.5 lassen mich aber vermuten, dass du mehrere /24-Netze hast.

Probiers mal mit 192.168.177.255 respektive 192.168.178.255.

An sich gibt's nur die universelle 255.255.255.255 um einen Broadcast 
auf allen Interfaces zu erzeugen und die Broadcast-Adresse eines 
Interfaces um nur auf diesem einen zu senden.  Geroutet werden 
Broadcasts üblicherweise nicht.

von Rene K. (xdraconix)


Lesenswert?

foobar schrieb:
> mich aber vermuten, dass du mehrere /24-Netze hast.

Ja das ist richtig, dazwischen sitzt eine VPN (anderer Standort).

foobar schrieb:
> Geroutet werden
> Broadcasts üblicherweise nicht.

Okay, das habe ich vermutet. Ich werde mal in dem gleichen Netz einen 
Webserver aufsetzen und dies probieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.