title: How to connect to a computer without public IP?
body: <p>I have a simple app idea in my mind and I need to know how to connect from an Android application (client) to a Windows application (Delphi, server).</p>
  
  <p>There is no need to be specific about the platform, I am familiar with networks in Delphi using winsock or Indy and I'm sure I will be able to figure out the appropriate mechanism in Android. </p>
  
  <p><strong>What I need to know</strong> is how to connect to a server (computer), which doesn't have its own public IP <em>and</em> is not in the same network as the client (one can be behind a local router, while the other might be connecting to the internet through 3G, for instance). This should be possible, as many programs work like that (remote desktop programs, TeamViewer, for instance: one computer is assigned an ID and using this ID other computer can connect to it.) I will not have access to the routers behind which the app will be running, so port forwarding is not an option.</p>
  
  <p>I have a working network app, but that only works in LAN, so I'm guessing somewhat another approach is needed.</p>
  
  <p>Thanks for answers</p>