http://en.wikipedia.org/wiki/UDP_hole_punching
And also, The miniupnpc lib DOES work on windows. I use it all the time
(and iOS, Mac, Linux, etc)
On 5/3/2011 8:37 AM, Chris Meub wrote:
There's more on it here:
http://alumnus.caltech.edu/~dank/peer-nat.html
<http://alumnus.caltech.edu/%7Edank/peer-nat.html>
On Mon, May 2, 2011 at 10:27 PM, Josh Klint <[email protected]
<mailto:[email protected]>> wrote:
So what you're saying is:
Client - player who wants to play game
Server - player who wants to host game
Participant #3 (for lack of a better term) - program running on a
dedicated
server
Client and Server both creates client hosts that connect to
Participant #3,
which is running at a known IP address, on a known port.
Participant #3 gets Server's IP address and port, and sends this
information
to Client.
Client uses this information to immediately connect to Server,
using the IP
address and port provided by Participant #3.
Is that correct? So really the only time you need this is when
Server is
behind a router. If Server was a player plugged straight into a
modem, or
Server was a dedicated server, this would not be necessary.
-----Original Message-----
From: [email protected]
<mailto:[email protected]>
[mailto:[email protected]
<mailto:[email protected]>]
On Behalf Of Lee Salzman
Sent: Monday, May 02, 2011 1:30 PM
To: Discussion of the ENet library
Subject: Re: [ENet-discuss] NAT punch-through
Just create both hosts and open a normal ENet connection on both
hosts to
some third party server not behind a NAT. This server should then
report the
addresses to both of the hosts needing to take part in the
connection. The
hosts can then use these addresses to connect to eachother, but
just make
sure you connect immediately after, or the router may close down
the port
again. Once that's up, the normal ENet keepalive ping is probably good
enough by itself to keep the connection open. This works because
each ENet
host maintains a single UDP socket for all its connections, so
provided you
are on an asymmetric NAT, once the initial connection to the third
party
opens the port, it should keep that port open provided you are
servicing the
connection regularly.
Note this will only work with asymmetric NATs - as in the router
opens a
port that works for any remote client to connect back to, so even
if A is
behind NAT, and connects to B, another peer C can connect to the
address
opened for A. Symmetric NAT is hell and only lets B connect back
to A, not
C, and there's basically no sane way to punch through those.
Exactly what the third party is really depends on your
application, and it
not something that belongs in ENet proper.
On 05/03/2011 01:34 AM, Chris Meub wrote:
> I am by no means an expert on the subject, but I am using a
really basic
form of NAT punch-through with Enet at the moment with a hobby
project. I
have 2 clients, one at home behind a consumer router, and 1 at the
office
behind a firewall. Both connect to a central server, and begin
transmitting
packets to the server. The server collates the packets into
simulation step
packets, and sends those back to each client. This system works
fine and
I've had no issues with our firewall or any routers.
>
> Now I imagine if you wanted to get rid of the central server,
that would
be another story. You would probably have to still use a central
server for
matchmaking and then do some trickery to figure out which IP+port
each peer
needed to start sending packets to in order to bypass the
firewall(s). But I
imagine one could still do that with Enet.
>
> The only other thing I can think of would be some kind of brute
force
library that randomly tries ports until it finds one that can get
through
the firewall. Is that what RakNet provides?
>
> On Mon, May 2, 2011 at 1:32 PM, Josh Klint <[email protected]
<mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>>> wrote:
>
> Hi,
>
> 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.
>
> 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.
>
> Best Regards,
>
> Josh Klint
>
> CEO
>
> Leadwerks Software
>
>
_______________________________________________
ENet-discuss mailing list
[email protected] <mailto:[email protected]>
http://lists.cubik.org/mailman/listinfo/enet-discuss
_______________________________________________
ENet-discuss mailing list
[email protected] <mailto:[email protected]>
http://lists.cubik.org/mailman/listinfo/enet-discuss
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss