Systems and methods for controlling the number of clients that can access
a server in a server-client network are described. A communications
filter driver resides on the server and monitors network communications
to determine a unique network address of each client that attempts to
access the server. A table of clients that have accessed the server is
stored at the server. When a client attempts to access the server, the
server allows the client to access the server if the network address of
the client is listed in the table. If the network address of the client
is not listed in the table, the server determines if a client limit has
been met or exceeded. If the limit has not been met, the client is
allowed to access the server and the Internet address of the client is
added to the table.
If the limit has been reached, the server determines if the client is a
client that has previously accessed the server under a different network
address. This is accomplished by sending a signal to each network address
listed in the table and requesting a response. If a response is not
received from a client, then the network address for that client is
removed from the table and the client attempting to access the server is
allowed to access the server. The network address for this client is then
added to the table. If a response is received from all network addresses,
a signal indicating that a client limit has been exceeded is sent to the
client attempting to access the server and access to the server is denied
to that client.