Currently my users connect to their computer from their phone via a asynchronous TCP connections, but this requires them to open a specific port, and to have to know their IP address. Then there's the problem of dynamic IP addresses, and it all becomes just too much.

I'd like for them to not have to mess with any of this. And after a bit of searching I've realized what I really need is a Direct Connect p2p connection between the two.

I'd like to implement this, but what do I need? The server running on the user's computer is .NET and the clients are running Android and iPhone.