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.