Subject Re: Controlling the Number of Simultaneous Users
Author Dan Cooperstock
--- In, Lee Jenkins <lee@...> wrote:
> The problem is that your licensing might be fairly easily
circumvented through
> the database, IMO.
> I had a need to do what you're doing and simply created a TCP
based "License
> Manager" that runs as a service (or app depending on OS) on the
server or master
> computer. When workstations start the software, the software uses
> communication to talk with the license manager to say
basically "hey, can I
> run?", the license manager says "well, only 4 out of 7 licenses are
being used
> so sure!". The used count get incremented. When workstations
shutdown the
> software, the software logs into the license manager again to "log
out" thereby
> freeing up another license.
> The license manager also tracks the IP of the workstation that gets
clearance to
> run so that if the workstation or license manager were to go down
for some
> reason, the license manager would read the IP of the incoming
request when
> restarted and determine that the workstation was already allowed to
> All in all, works very well and I keep that logic out of the
database. Of
> course, a determined hacker/cracker would still be able to
circumvent the system
> with some work which I know from experience, but it serves its
purpose well.
> --
> Warm Regards,
> Lee

That idea is fairly similar to the idea someone on an ASP
(Association of Shareware Professionals) forum suggested, which is to
send out a multicast UDP packet on startup, that other instances of
my program on the same subnet respond to with "Yes, I'm here". The
sender counts the responses, and if they exceed the licensed # of
users (minus one, to allow the sender to run), prevents the sender
from running.

This actually seems a bit simpler, because it doesn't need a server
program, and isn't affected by crashes.

Any comments on that idea? Thanks.