title: UDP Hole Punching Algorithm
body: <p>Can anyone give an example of a UDP Hole Punching ?</p>
  
  <p>Actually, I want to write a chat program with which people can chat when they know each other's IP. But both the machines will be behind a firewalled router. So, I need to punch a hole in order to communicate.</p>
  
  <p>I would like a function such that on calling the function, a hole would have been punched and future communications would move on easily - if that's not too much to ask for :)</p>