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.
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.).
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.
UPnP is not an option, because some NATs got this deactivated due to security-reasons.