Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [idUDPClient] Broadcast auf allen Interfaces raus senden (https://www.delphipraxis.net/122616-%5Bidudpclient%5D-broadcast-auf-allen-interfaces-raus-senden.html)

gsh 19. Okt 2008 13:57


[idUDPClient] Broadcast auf allen Interfaces raus senden
 
Hi Leute

Ich habe das Problem das meine idUDPClient Komponente nur den Broadcast nur auf einem Interface rausschickt. Dieser Broadcast ist zum finden von anderen Clienten im Netz. Wenn ich jetzt aber z.b. Hamachi installiert habe sendet er den Broadcast mit der 5.x.x.x Adresse weg. Wenn das Hamachi dabei aber nicht läuft dann geht das Packet verloren.

Wie kann ich jetzt dem idUDPClient beibringen das er auf alle interfaces die er findet einen Broadcast raus sendet?

Mein Code zum senden:
Delphi-Quellcode:
IdUDPClient.BroadcastEnabled := true;
IdUDPClient.Broadcast('Hallo', vUDPPort);
Mein idUDPServer wird so gestartet:
Delphi-Quellcode:
IdUDPServer.DefaultPort := vUDPPort;
IdUDPServer.OnUDPRead := UDPServerUDPRead;
IdUDPServer.OnUDPException := UDPServerOnException;
IdUDPServer.Bindings.Add.IP := '0.0.0.0';
IdUDPServer.Active := true;

gsh 20. Okt 2008 16:41

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
*push*
:duck:

gsh 25. Okt 2008 16:49

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
:duck:

gsh 30. Okt 2008 20:28

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
:duck:

x000x 30. Okt 2008 21:38

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Moin moin,

kenne Hamachi nicht... scheint aber auch nix mit deinem Problem zu tun zu haben.

Normalerweise sendest du einen Broadcast auf z.B. 192.168.1.255 oder 192.168.255.255 u.s.w. halt
je nachdem welches Netz du erreichen willst. Das sollte bei Indy ungefähr so aussehen
Delphi-Quellcode:
//...
   IdUDPClient.Host := '255.255.255.255';
   IdUDPClient.BroadcastEnabled:= True;
   IdUDPClient.Broadcast ('HALLO', vUDPPort);
//...
Damit sollte der broadcast über alle interfaces rausgehen (Vorraussetzung ist natürlich ein konfiguriertes Netzwerk)
Hierbei entscheidet aber letztendlich das Routing welche Schnittstellen benutzt werden.
Eingabeaufforderung:
Code:
c:\> route print
zeigt dir die Schittstellen an die benutzt werden.

gsh 30. Okt 2008 22:34

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Zitat:

Zitat von x000x
Damit sollte der broadcast über alle interfaces rausgehen (Vorraussetzung ist natürlich ein konfiguriertes Netzwerk)

JA der Boradcast SOLLTE über alle interfaces rausgehen ... tut er aber nicht <--- und genau das ist das Problem

Zitat:

Zitat von x000x
Hierbei entscheidet aber letztendlich das Routing welche Schnittstellen benutzt werden.
Eingabeaufforderung:
Code:
c:\> route print
zeigt dir die Schittstellen an die benutzt werden.

nicht unbedingt
Mein Routingtable:
Code:
     Netzwerkziel   Netzwerkmaske         Gateway  Schnittstelle Anzahl
          0.0.0.0          0.0.0.0      192.168.0.1   192.168.0.100       10
          5.0.0.0        255.0.0.0     5.209.227.44    5.209.227.44       20
     5.209.227.44  255.255.255.255        127.0.0.1       127.0.0.1       20
    5.255.255.255  255.255.255.255     5.209.227.44    5.209.227.44       20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.0.0    255.255.255.0    192.168.0.100   192.168.0.100       10
    192.168.0.100  255.255.255.255        127.0.0.1       127.0.0.1       10
    192.168.0.255  255.255.255.255    192.168.0.100   192.168.0.100       10
        224.0.0.0        240.0.0.0     5.209.227.44    5.209.227.44       20
        224.0.0.0        240.0.0.0    192.168.0.100   192.168.0.100       10
  255.255.255.255  255.255.255.255     5.209.227.44    5.209.227.44       1
  255.255.255.255  255.255.255.255    192.168.0.100   192.168.0.100       1
Standardgateway:      192.168.0.1
So das Standartgateway ist also mein router ... also mein LAN
Der Broadcast geht aber über die Hamachi schnittstelle weil hamachi in der adapter reihenfolge ganz oben ist

x000x 30. Okt 2008 23:09

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Moin moin,

für das Routing sind eigentlich die Ziele insteressant. Wenn du in deinem Client den Host
255.255.255.255 her nimmst, dann wird in die Routingtabelle geschaut, über welche Schnittstelle
gesendet wird. In diesem und deinem Fall wären es:
Code:
     Netzwerkziel   Netzwerkmaske         Gateway  Schnittstelle Metrik
---------------------------------------------------------------------------
...
  255.255.255.255  255.255.255.255     5.209.227.44    5.209.227.44       1
  255.255.255.255  255.255.255.255    192.168.0.100   192.168.0.100       1
Da für die 255.255.255.255 eine (2) Route(n) vorhanden ist, ist das Standardgateway eigentlich uninteressant, sondern nur
diese beiden Zeilen. Wie hier jetzt aber entschieden wird, welches Interface genommen wird... da bin ich im Moment
auch überfragt, da ja auch die Metrik gleich ist... hm, evtl. kommt ja nochmal einer der Ahnung hat. Sorry...

gsh 30. Okt 2008 23:15

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Zitat:

Zitat von x000x
Da für die 255.255.255.255 eine (2) Route(n) vorhanden ist, ist das Standardgateway eigentlich uninteressant, sondern nur
diese beiden Zeilen. Wie hier jetzt aber entschieden wird, welches Interface genommen wird... da bin ich im Moment
auch überfragt, da ja auch die Metrik gleich ist... hm, evtl. kommt ja nochmal einer der Ahnung hat. Sorry...

ja ok wahrscheinlich nimmt er dann da einfach die erste

Eine Frage was ich mir stell: Ist das Absicht das er nur eine nimmt oder ein Fehler in den Indys (oder von Windows)?

x000x 31. Okt 2008 00:30

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Moin moin nochmal,

Zitat:

Zitat von gsh
Eine Frage was ich mir stell: Ist das Absicht das er nur eine nimmt oder ein Fehler in den Indys (oder von Windows)?

Ok, weder noch... Wenn du dir mal den Artikel durchliest, wirst du feststellen, dass ich auch etwas daneben lag.
Wenn du mit Client.Broadcast() einen Broadcast sendest, geht der immer als Ethernet-Broadcast an die MAC-Adresse FF:FF:FF:FF:FF:FF.
Zitat:

Zitat von Wikipedia
Limited Broadcast
Als Ziel wird die IP-Adresse 255.255.255.255 angegeben. Dieses Ziel liegt immer im eigenen Netz und wird direkt in einen Ethernet-Broadcast umgesetzt. Ein limited broadcast wird von einem Router nicht weitergeleitet.

Für dich ist dann wohl ein Directed Broadcast interessant.

Zitat:

Zitat von gsh
...Wenn ich jetzt aber z.b. Hamachi installiert habe sendet er den Broadcast mit der 5.x.x.x Adresse weg. Wenn das Hamachi dabei aber nicht läuft dann geht das Packet verloren...

Das versteh ich aber trotzdem noch nicht wirklich. Was passiert da nochmal genau?

gsh 31. Okt 2008 07:47

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden
 
Zitat:

Zitat von x000x
Für dich ist dann wohl ein Directed Broadcast interessant.

hmm das wird nicht so leicht. Den dann muss ich mir zuerst alle IPs holen richtig mit der Subnetmask das Netz raus filtern und dann einen directed Broadcast rausschicken ...

Zitat:

Zitat von x000x
Zitat:

Zitat von gsh
...Wenn ich jetzt aber z.b. Hamachi installiert habe sendet er den Broadcast mit der 5.x.x.x Adresse weg. Wenn das Hamachi dabei aber nicht läuft dann geht das Packet verloren...

Das versteh ich aber trotzdem noch nicht wirklich. Was passiert da nochmal genau?

Sobald du Hamachi installierst setzt er z.b. die 5.x.x.x route fest in das system ein. Wenn du also einen ping zu 5.1.1.1 machst dann geht er durch den routing table zum hamachi adapter. Da aber mein hamachi nicht immer läuft wird das packet dann einfach gedropt weil es nicht durch einen vpn tunnel weitergeleitet werden kann.
Somit geht dann auch mein broadcast verloren weil dieser nur über den hamachi adapter gesendet wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz