I am looking for suggestions or a solution for peer NAT traversal in .Net. Say I have a chat application and two clients need to connect, but both of them are behind NAT:
For home scenarios, uPNP is probably suitable, since only a cable modem or consumer router is involved. But what about a corporate environment where uPNP is not possible?
I am familiar with UDP holes that are suitable for handshaking, but I would not rely on it to transmit real application data.
I also studied IPv6 and Teredo, but I'm not sure that every client will have IPv6 availability, and it is a bit confusing regarding all the requirements of Teredo (servers, relays, etc.).
This is 2011 and IM / Chat clients have been around for a decade, and then some - so I believe this problem has been resolved many times. Can anyone recommend best practices in this area? Thanks in advance!
znelson
source share