Hallo!
Bei dieser Frage handelt es sich nicht um ein Programmierproblem an sich, es ist eher eine Designfrage. Deshalb halte ich auch die Rubrik "Programmieren allgemein" für die Richtige. "Internet /
IP / LAN" ist wohl eher für Programmier-Probleme der Bauart "Wie schreibe ich das".
Die programmiertechnische Umsetzung ist kein Problem (sollten Fragen auftreten, kann ich ja nochmal in der passenden Sparte fragen
), es geht mir um den (von der verwendeten Sprache unabhängigen) Lösungsweg bzw. das Programm-Design.
Vorgeschichte des Problems
- 1. Wie hinreichend bekannt ist, wird eine T-DSL-Verbindung nach 24 Stunden getrennt.
- 2. Die Software der bekannten Fritz!-Karten von AVM bieten die Möglichkeit, beim Internet-Connect ein beliebiges Programm zu starten. Die zugewiesene IP wird dabei als Parameter übergeben. Das gilt für DSL und ISDN.
- Ein Freeware-Telefon für VoiceOverIP erweist sich als nicht T-DSL-kompatibel - nach der Zwangstrennung mag das Tele nicht mehr bimmeln. Programm beenden und neu starten ist angesagt
Der Lösungsansatz
Ein Programm schreiben, das bei Connect (also neuer
IP) das Telefon sucht, beendet und neu startet.
Da bei meiner Konfiguration das Telefon nicht auf dem Rechner mit der Fritz!-Karte läuft, kommt nur eine Netzwerk-Lösung in Frage. Ein
IP-Signal informiert ein Programm, daß ein Connect erfolgt ist.
Nach den ersten Überlegungen folgte die "übliche Eskalation":
- 1. Es wäre schön, die IP für Alle verfügbar zu haben - kein Thema, schreiben wir sie in eine Datei.
- 2. Es sollte die Art der Verbindung bekannt sein - einfach das Programm zweimal speichern (ISDN und DSL) und den Programmnamen in der Datei mitspeichern.
- 3. Übertragen der Informationen im LAN - auch kein großes Problem.
- 4. Es sollten mehrere Rechner informiert werden - mit UDP-Broadcast zu lösen.
- 5. Das System soll universell einsetzbar werden.
Beim letzten Punkt tritt ein Problem auf. Wenn ich alle möglichen und denkbaren Anwendungen in
ein Program stecke, züchte ich mir eine "gefiederte, eierlegende Wollmilch-Reit-Sau" - vom Speicherverbrauch der ja prinzipbedingt ständig laufenden Applikation gar nicht zu reden.
Zum UDP-Broadcast brauche ich einen Client als Sender und einen Server als Empfänger. Bei mehreren Rechnern spielt das keine Rolle - mehrere Rechner mit Empfänger auf dem gleichem UDP-Port sind möglich, das Ganze klappt bereits. Bei mehreren Programmen auf einem Rechner stoße ich allerdings auf das Problem, daß diese nicht denselben Port benutzen können - es nur 1 Server pro Port erlaubt.
Für mich bieten sich 2 Lösungswege an:
Lösung A
Da der verwendete UDP-Port sowieso einstellbar sein soll, lasse ich den Sender eben an mehrere Ports senden (wieviele soll ich vorsehen
). Der Benutzer stellt zunächst den Empfänger auf einen freien Port und gibt dann am Sender die Portnummer an.
Bei dieser Lösung gibt es dann für jede Aufgabe ein entsprechendes Empfänger-Programm, das bei eingehender Nachricht die gewünschte Funktion ausführt.
Lösung B
Es wird nur ein Port verwendet. Der Empfänger löst nicht die anstehenden Aufgaben, sondern startet per ShellExecute eine Liste von Programmen, die jeweils eine der gewünschten Aufgaben erledigen.
Um es nochmal klarzustellen: Das Senden per UDP ist bereits realisiert, Programmiertips oder Source benötige ich keinen! Es geht mir nur um Eure Meinungen, welche der beiden Lösungen ich realisieren sollte. Vielleicht hat ja jemand sogar noch eine dritte Lösung, über die wir diskutieren können - ich bin für Vorschläge offen!
Für Eure Beteiligung bedanke ich mich im Voraus,
Gruß
Dietmar Brüggendiek