Entwickler-Ecke
Internet / Netzwerk - Starten von Programm nur bestimmte XMal im Netzwerk zulassen
rstaeker - Fr 14.10.05 20:32
Titel: Starten von Programm nur bestimmte XMal im Netzwerk zulassen
Hi Leute,
einige Freunde und ich schreiben nun schon seit längerem an der kompletten Neuentwicklung unserer Kassensoftware für Diskotheken.
Die alte Version ist zwar im Einsatz, aber funktionsmäßig stark veraltet.
Jetzt sollen auch einige Funktionsbeschränkungen mit reinkommen. Userechte, etc. ist schon drin.
Uns fehlt nur noch eines (auf der Wunschliste).
Hat jemand eine Idee, wie man bewirken kann, daß ein Programm im Netzwerk nur X-Mal gestartet werden kann.
Also quasi eine Art von Arbeitsplatz Lizenzierung.
Ich habe im Internet nur Lösungen mit Hardware-Dongels gefunden. Geht das nicht auch ohne das, oder vielleicht mit einer Art von Software-Dongel (vermutlich dann Server / Client).
Bin für Vorschläge dankbar
MfG
Rene
alias5000 - Fr 14.10.05 20:43
eigentlich ganz einfach. Man meldet jedem Client beim Start, dass er online ist. Die antworten und sagen, du kannst starten, oder "du bis einer zu viel"
Das ganze in "Code"
Quelltext
1: 2: 3:
| -Programmstart -z.B. mit Indy: TUDPCLient.Broadcast('Hello'); auf einem definierten Port natürlich! -warten bis antwort kommt, dann entscheiden, ob Programm startet oder geschlossen wird |
Verstanden?
rstaeker - Fr 14.10.05 20:53
Danke,
scheinbar war die Client / Server Idee doch richtig.
Werde jetzt mal versuchen, das mit Indy hinzubekommen. Hab noch nie damit gearbeitet.
Melde mich sonst nochmal im Forum
Rene
alias5000 - Fr 14.10.05 21:01
naja eigentlich geht das auch ohne richtigen Client/Server. Jedes PRogramm hat eine Server und CLient-Komponente des UDP-Protokolls. Wenn ein Client per Broadcast was verschickt, empfangen alle UDPClients auf dem Port die Nachricht. Das geht über das Ereignis OnRead. Eigentlich ganz einfach
MSCH - Sa 15.10.05 10:58
alias5000 hat folgendes geschrieben: |
| naja eigentlich geht das auch ohne richtigen Client/Server. Jedes PRogramm hat eine Server und CLient-Komponente des UDP-Protokolls. Wenn ein Client per Broadcast was verschickt, empfangen alle UDPClients auf dem Port die Nachricht. Das geht über das Ereignis OnRead. Eigentlich ganz einfach |
bis zum nächsten Router/Switch/Gateway, der per se broadcasts filtert.
grez
msch
alzaimar - Sa 15.10.05 11:05
UDP bietet auch kein QoS, also ist nicht garantiert, das alle Abmeldungen auch alle Clients erreichen. Wenn ich nur eine maximal Anzahl an Clients erlauben will, benötige ich ka zwangsweise einen Zähler: +1 für jeden Start, -1 für jedes Ende eines Clients. Dieser Zähler wird ohne Server von allen Clients gepflegt. Wenn nun ein 'Tschüss, ich geh jetzt' nicht durchkommt, dann verhaspeln sich die Clients. Gut, wie oft das vorkommt, kann ich nicht beurteilen, aber so elegant das UDP auch ist, so unsicher ist es auch.
Bleibt also nur die C/S Lösung über Sockets. Dazu musst Du den Clients mitteilen, wo die zentrale Überwachungsinstans ist. Gleichzeitig musst Du sicherstellen, das diese Überwachungsinstanz wirklich nur 1x gestartet wird, denn sonst verbinden sich X clients mit Server#1 und weitere mit Server#2 usw.
Es gibt bei sourceforge eine Komponentensammlung von Turbopower, die alle diese Aspekte abdeckt. Das Teil ist richtig gut und, soweit ich das weiss, auch ausgereift.
FYI:
http://sourceforge.net/projects/tponguard
rstaeker - So 16.10.05 21:58
MSCH hat folgendes geschrieben: |
bis zum nächsten Router/Switch/Gateway, der per se broadcasts filtert.
grez
msch |
Das ist mir klar, aber wir reden von autonomen Netzwerken mit 5 bis 15 Rechnern. Da gibt es sicher keine PortBlocks. Ist ja eine Spezialentwicklung, kein Internetdownload, -Vertrieb, etc., daher kann man das bei der Einrichtung von Switchen ja bedenken.
alzaimar hat folgendes geschrieben: |
| UDP bietet auch kein QoS, also ist nicht garantiert, das alle Abmeldungen auch alle Clients erreichen. Wenn ich nur eine maximal Anzahl an Clients erlauben will, benötige ich ka zwangsweise einen Zähler: +1 für jeden Start, -1 für jedes Ende eines Clients. Dieser Zähler wird ohne Server von allen Clients gepflegt. Wenn nun ein 'Tschüss, ich geh jetzt' nicht durchkommt, dann verhaspeln sich die Clients. ... |
Werden aber trotzdem auf Client/Server gehen. Mal schauen, ob TCP oder UDP.
Das Zentrale Programm (Einlaß und Abrechnung) muss eh immer laufen. Da müsste man den Server direkt integrieren können.
Client / Server ist wesentlich sicher als Client / Client, wie alzaimar sehr richtig festgestellt hat.
Danke für die Meinungen
Rene
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!