Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#5

Re: Desingnproblem bei LAN-Broadcast

  Alt 25. Aug 2004, 01:00
Hallo...

die Klasse TIdSocketHandle kapselt die WinSock-API setsockopt, welche wiederum als Public-Properties (Client: Binding / Server: Bindings) von TIdUDP* zur Verfügung gestellt wird.

Das Wiederverwenden von Adressen funktioniert nur, sofern bereits die 1. Applikation, die den Port belegt, die Socket-Option (SO_REUSEADDR) entsprechend setzt. Insofern dürfte also keine "alte" Applikation zum Absturz gebracht werden können, da zu vermuten ist, dass diese SO_REUSEADDR nicht gesetzt hat.

Das Problem mit dem Port-Wildwuchs oberhalt 1024 dürfte vernachlässigbar sein - die Wahrscheinlichkeit, dass 2 Applikationen den selben Port verwenden, beträgt 15 ppm
Aber der Flexibilität halber sollte man den Port konfigurierbar auslegen, jedoch mit der Auflage, dass auf allen beteiligten PCs der selbe Port gewählt werden muss.

Ein anderer Ansatz wäre ein TCP-Server auf dem "Chef"-PC, zu dem die Informationsbezüger eine Verbindung aufbauen; bei Änderungen sendet der Chef-PC allen verbundenen Applikationen die Mitteilung. Bei diesem Ansatz wäre dann nur noch auf diesem PC ein freier Port zu suchen, der jedoch wieder bei allen Clients konfiguriert werden muss.

Eine etwas aufwändigere Lösung wäre, wenn man ein bestehendes Protokol verwendet - SNMP-Trap wäre beispielsweise denkbar; hier bietet Windows APIs an, so dass mehrere Applikationen daran teilhaben können (SNMP-Extensible-Agent / SNMP-Trap-Listener).

Gruss Basilikum
  Mit Zitat antworten Zitat