Network Floating Licensing

Network Floating Licensing is where an application may be restricted to running on a specific network, and restricted to a certain number of concurrent seats (where a seat may be a user or running instance of your application). Read our blog post for a general overview as well as two approaches to network floating licensing: Controlling Concurrent User Access with Network Floating Licensing.

Semaphore Files

A Network Semaphore File is a file, which contains no useful data, stored on a common network directory used to assist in enforcing a Network Floating License in an application. One file is created and locked exclusively for each active workstation or instance of your protected application. Other LAN users attempting to run the application will not be able to use any semaphore files that are locked, which is how this can enforce license compliance which limits the number of network "seats." This approach is ideal for many, as there is no need to manage a separate server or appliance to enforce restrictions. This feature is only supported when both the client and server use Windows Vista or Windows Server 2008 and later.


The computer hosting the Windows (SMB/CIFS) share (the server) which houses the semaphore files is ultimately responsible for handling when a file is unlocked. In most cases, applications which are terminated gracefully will unlock and delete their semaphore files. If the application crashes, however, the server will eventually unlock the semaphore file, but it will not delete the file. Having many of these files present can lead to some performance degradation, as each of these orphaned files can take a while to try to lock or delete. For this reason, you have the option to establish a "clean-up thread" (the NetworkSemaphore constructor in PLUSManaged has a runCleanupThread argument, and PLUSNative has a SK_PLUS_NetworkSemaphoreCleanup function that can do this for you), which establishes active processes that try to delete orphaned files quietly, in the background. Of course, this will increase the amount of bandwidth used, but can help increase performance keeping the share location clear of any orphaned files.

This functionality is supported on environments where semaphore files are hosted on a Windows (SMB/CIFS) share, which functions best on a Local Area Network (LAN). While this may be used in a Wide Area Network (WAN) environment (which includes scenarios where users access a given "LAN" over a Virtual Private Network [VPN] connection), it is strongly advised that testing be done before deploying to any given WAN environment. This is because the performance of this feature is centered around the Windows (SMB/CIFS) shares being used to host the semaphore files, and WAN/VPN environments can see much slower performance than a typical LAN configuration.

Additionally, any users who will use an application using this type of licensing will need access to read, create, write, modify, and delete the semaphore files.

A good starting point for seeing how this kind of functionality works and can be integrated into your application is to test and review the sample applications.

Cloud-Controlled with SOLO Server

In cases where it is not practical or feasible to use semaphore files (such as for high-load and/or WAN environments), it is also possible to use SOLO Server to enforce concurrent seat limitations. In this case, SOLO Server web services are used to manage the state of each "session." These web services may also be used to automate authorization of "check-outs" for temporary, off-line use of the licensed application. You can read the overview on Cloud-Controlled Network Floating Licensing using SOLO Server for additional details.

Working with Network Floating Licenses in SOLO Server

After adding a license in SOLO Server, you can edit the license details to customize additional settings. When editing these details, you can change the number of network seats a given license may allocate by modifying the License Counter value.  When using semaphores for network floating, the license will need to be refreshed after applying this change.