1. Traditional Server - Client architecture
For many years, to connect a USB over network, you’d have to install a Server-side app on all your machines with physically attached USB devices and share each specific device separately to make it remotely accessible. The Server app redirected USB traffic from a shared device to the client machine.
Then you’d have to install the Client-side app on the machines that needed to access USB devices. That Client app created a virtual USB device that, in real-time, exchanged data with the physical USB device so you could interact with it just as if it was directly plugged into the client machine.
The main downside of this approach is that Server and Client apps were not interchangeable. As they usually had very similar interface, using them on one machine was very confusing. The most typical example of this approach is USB over Network by FabulaTech.
2. Unified solution
More up-to-date approach is to have a universal client app that works both as a Server-side and a Client-side solution. For example, once you log into your FlexiHub account, you’ll see the list of the local devices shared over the network, along with the list of all the remote devices available for connection.
There is no more need to share each individual USB device, change your NAT or Firewall settings, and worry about external IP addresses. Plus, FlexiHub has a global redirection servers network to increase your connection speed. One-click and a USB device from any place in the world is already on your computer.