   Working with/through routers -- player-to-player connections
  Greetings!I'm trying to figure out how to access a particular computer behind a router for a player-to-player connection.  The game is written in c++ in linux and will (eventually) be compiled for windows and mac as well.I have no idea how to do this, as the sockets api for c++ doesn't seem to handle stub networks (unless i'm missing something...).  Any help will be greatly appreciated.Connection model:The two players will find each other via a server accessed in an in-game interface (think of it as a simplified battlenet) and then the players will connect to each other's computer, such that the server will not be necessary during the actual gameplay (currently the game is planned to be only 1v1, though team games will be allowed in the future) in order to decrease the amount of needed bandwidth (read: expense :p) on my part.EDIT: i found this article: http://www.mindcontrol.org/~hplus/nat-punch.htmlbut i still am not sure how it's done in c/c++ and couldn't seem to find any resources on the topic either with google.Clarification: How are introducers made?  Or is it obvious if I knew more about socket programming?[Edited by - aknar_trebna on April 8, 2010 3:36:47 PM]
  The introducer is typically your matchmaker service, which lets the players find each other. When a match is made, it sends the player address to each of the other players, so they can start sending data to the other end with the right incoming port.You probably want a fallback where you support explicit port forwarding through firewalls, too, because NAT punch-through is somewhat hit-or-miss (not a 100% solution). Explicit port forwarding is something that the user has to set up manually (except in the case of UPnP, but I highly recommend against using UPnP), but your app also needs to understand it's being port forwarded, so the introducer can announce the proper port for any match made.