I implemented this using ENet but have not had a chance to finish testing it.<br>The basic concept is simple so I expect it should work.<br><br>I did something a bit sketchy but should probably work. <br>
All you need to do is send a few packets to the destination IP.<br>The content isn't important since all you're doing is establishing the connection with the NAT router.<br>ENet has code to send packets that is specific to operating system (see win32.c).<br>
I call an internal library function one next layer above those routines.<br>It implements a non operating system specific packet send.<br><br>Another ENet mailing list member suggested 5 packets sent about 100 ms apart.<br>
He had no specific information that the count or timing was important.<br><br>Alternately I believe you could also use ENet to connect to the destination address and ignore the errors on the first connection attempt.<br>Enet will send packets trying to connect that will punch the hole for you.<br>
<br><br>YMMV.<br><br><div class="gmail_quote">On Mon, May 2, 2011 at 3:32 PM, Josh Klint <span dir="ltr"><<a href="mailto:jklint@leadwerks.com">jklint@leadwerks.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal">Hi,</p><p class="MsoNormal"> </p><p class="MsoNormal">A search for enet and NAT punch-through yields a lot of questions about whether this is possible and discussion of how it might be done, but I have never found an actual instance of working code, or anyone who claims to have successfully implemented NAT punch-through with enet.<br>
<br>I love the simplicity of enet, but without NAT punch-through support, I don't see how it is useful for networked software.  I’ll have to (unfortunately) go with RakNet, which is huge, bloated, and comes with licensing hang-ups I have to pass on to my customers.</p>
<p class="MsoNormal"> </p><p class="MsoNormal"> </p><p class="MsoNormal">Best Regards,</p><p class="MsoNormal"> </p><p class="MsoNormal">Josh Klint</p><p class="MsoNormal">CEO</p><p class="MsoNormal">Leadwerks Software</p>
<p class="MsoNormal"> </p></div></div><br>_______________________________________________<br>
ENet-discuss mailing list<br>
<a href="mailto:ENet-discuss@cubik.org">ENet-discuss@cubik.org</a><br>
<a href="http://lists.cubik.org/mailman/listinfo/enet-discuss" target="_blank">http://lists.cubik.org/mailman/listinfo/enet-discuss</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>---<br>"The great thing about Object Oriented code is that it can make small, 
simple problems look like large, complex ones."<br>