Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDPServer emfängt keine Broadcast & WS-Disvovery Messages (https://www.delphipraxis.net/188212-udpserver-emfaengt-keine-broadcast-ws-disvovery-messages.html)

TERWI 10. Feb 2016 11:19

UDPServer emfängt keine Broadcast & WS-Disvovery Messages
 
Stehe hier vor einem kleinen Problem mit meinem WS-Discovery-Tool.

S. g. PROBE's von einem Server senden an 239.355..255.250:3702 von "unbekannten" CLienten ist keine Thema - auch nicht die eine oder mehrere Antworten an den Absender lesen.

Nun sollen sich aber auch Clienten selbst bei verfügbarkeit mit einem s.g. HELLO melden.
Das geht ebenfalls mit 239.355..255.250:3702 in's LAN.

Wireshark sieht das alles - nur mein UDPServer (Indy 10) stellt sich taub.
Muss ich da am UDPServer etwas bestimmtes einstellen ?
Suchen hat auch nicht viel geholfen weil meist kein Bezug auf Indy. Mir fehlt das AHA-Erlebnis .... :oops:

Mavarik 10. Feb 2016 11:35

AW: UDPServer emfängt keine Broadcast & WS-Disvovery Messages
 
Zitat:

Zitat von TERWI (Beitrag 1329940)
von einem Server senden an 239.355..255.250:3702

Sendet an <> Broadcast...

Port ja, IP Nein. Zeig mal Deinen Source dazu...

Eigentlich braucht es nur ein

Delphi-Quellcode:
idUDPClient1.Broadcast('Hello there my Name is Client 1',3702);

Mavarik

TERWI 10. Feb 2016 11:49

AW: UDPServer emfängt keine Broadcast & WS-Disvovery Messages
 
Wegen der eigenartigen Initialisierung siehe an hier:
http://www.delphipraxis.net/1329903-post7.html

Code:
const
  WS_Discovery_IP   = '239.255.255.250';
  WS_PORT_HELLOBYE  = 3702;

  // Create Class

  // create the "listening" server for HELLO & BYE
  udpSrv_Lstn := TIdUDPServer.Create;
  // !!! http://www.delphigroups.info/2/11/215650.html
  FMethod.Data := udpSrv_Lstn;
  FMethod.Code := @TWSDiscovery.udpSrv_LstnRead;
  with udpSrv_Lstn do begin
    Active          := false;
    OnUDPRead       := TUDPReadEvent(FMethod);
//    OnUDPRead       := udpSrv_LstnRead;     // das tut nicht tuten !!!
    Bindings.DefaultPort := WS_PORT_HELLOBYE;
    DefaultPort     := 20001;
    BufferSize      := 4096;
    ThreadedEvent   := true;
    BroadcastEnabled := true;
    Active          := True;
  end;

  Aufruf:
  udpSrv_Lstn.SendBuffer(WS_Discovery_IP, WS_PORT_HELLOBYE, SendBytes);
Einen speziellen, separaten Clienten habe ich hier nicht eingesetzt.
Die Funktion sendet ja auch so weit an besagte IP mit dem Port - manche Geräte antworten ja auch mit einem HELLORESPONSE - allerdings an meine PC-IP 192.168.178.11:3702
Das kann ich auch lesen ....

Ich möchte nun gerne selber auf die IP 239.255.266.260:3702 lauschen, wenn irgendein anderer Client dort was hinsendet.
Es geht mir hier um das Empfangen mit dem Server - NICHT senden (das klappt ja).

TERWI 10. Feb 2016 15:28

AW: UDPServer emfängt keine Broadcast & WS-Disvovery Messages
 
So - wieder/noch mal viel suchen und eine neue Erkenntns aus diesem seeeehr informativen Artikel hier von Remy Lebeau / Indy Project:
http://codeverge.com/embarcadero.del...estric/2001421

1.) Das was ich meine/worum es geht, ist KEIN BROADCAST, sondern MULTICAST.
(Steht ja auch deutlich bei WS-Discovery beschrieben ! Aaargh .....)
2.) Der TidUDPServer kann kein Multcast !
Dafür nehme man bitte die Komponenten TIdIPMCastClient und TIdIPMCastServer !
Wobei hier darauf zu achten ist, dass der Client 'lauscht' und der Server 'sendet' - also genau andersherum wie bei UDP.

.... 'eben mal schnell' ausprobiert und .... TÄTÄääääh: FUNKTIONIERT !
Ich bin begeistert. :witch:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.

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