I’d like to know how a central server works in connecting two devices. I’m assuming that when the device application starts up, it should register its IP address and other pertinent information (username) with the server. When it wants to connect to another device, it should look to find the address of another device on the server, maybe with a get request. Then set up a to connect to a socket. If the device application closes, it should unregister from the server. Is this correct?
Share
That’s pretty much correct.
Because one or both devices are probably behind firewalls (including NAT), you have to assume they won’t actually be able to connect directly to each other, so it won’t be as simple as opening a socket to the other device once you find out its registered address. You will either have to try firewall-traversal techniques (which will usually be successful with UDP but not with TCP) or have a helper that isn’t behind a firewall (which could be the same as the registration server or something else) carry all the data between the devices that wish to communicate.
Also, you will want to have the registration server time out registrations and the clients periodically refresh them, because clients won’t always have a chance to deregister themselves on the server when they terminate or lose access to the network.