title: TCP NAT-Traversal /- Punching with .NET
body: <p>I write an application where it is essential to connect clients directly with each other and keep them connected. After doing some research using superior techniques (google) I found out that what I need can be achieved by doing NAT-Punching or NAT-Traversal.</p>
  
  <p>Most people seem to use NAT-Punching via UDP, but in my case I need to do this with TCP (it is a fact, before someone is asking like "why not UDP?") and I couldn't find any sample code for this or at least a proper tutorial. All I could find where the theoretical appendages but nothing with Sockets or TCPClients (I prefer sockets.).</p>
  
  <p>Can someone please link me some sample code with which I am able to connect two clients which are behind a NAT or link me to a full tutorial with sample-code?
  I know this goal is hard to do in .NET (I am using VB.NET but I'm able to read and understand C# as well), but it should be possible.</p>
  
  <p>UPnP is not an option, because some NATs got this deactivated due to security-reasons.</p>