title: How to create a socket connection over nat from public end
body: <p>I feel this question is best started with a simplified version of the scenario.</p>
  
  <p>Server A is connected to the public internet.
  Server B is in a private Network and uses network address translation to connect to the internet.
  I own both servers and can edit the software on them.
  The ip addresses of the servers and the nat router are known to me.</p>
  
  <p>Using Winsock, I need to create a connection between them. I know enough about winsock for this to be trivial if the connection is started from server B, but I need server A to start the connection.</p>
  
  <p>I want to avoid using additional libraries if possible as it would appear to me that I only need to figure out what ip and port server A needs to use when starting the connection.</p>
  
  <p>What additional information do I require, How do I acquire it, and How do I act upon the information.</p>
  
  <p><em>note: I have investigated other similar questions, but none of them addressed this situation. I am  not sure if this should have been asked on server fault or another site, but if so please say which one before flagging as "off topic" instead of closing the question wordlessly.</em></p>