NAT part is covered by gamespy, i get two addresses of machines
involved. then i try to create host (not peer!) on mac and it fails
sometimes (question: why?). if it succeeds, then we go to making
connections business ;)
Regards!
On 18/09/2012 16:40, Daniel Aquino wrote:
Both hosts should try to send to one another at the same time from/to
predefined ports.
https://en.wikipedia.org/wiki/UDP_hole_punching
On Tue, Sep 18, 2012 at 11:24 AM, Martin Zemblowski
<[email protected] <mailto:[email protected]>> wrote:
gamespy transport service is using udp.
right now one of the player creates socket and just listens to it,
another on is actively trying to connect to other party, but fails
at create_host for some reasons. I am creating host in the same
way on both machines.
I am testing connectivity on the same machines constantly, so I
dont see any reason why it should work for 3 times in a row and
then wouldnt... and it's a bit weird moment - creating host, i
would expect it to fail when actually trying to connect
:(
On 18/09/2012 16:16, Daniel Aquino wrote:
Is gamespy using tcp or udp ?
If both your players try to connect at the same time then they
should get through after a retry or two.
Although there is many types of nat's so it might not always work.
On Tue, Sep 18, 2012 at 10:37 AM, Martin Zemblowski
<[email protected] <mailto:[email protected]>> wrote:
Hello!
I am using enet library in conjunction with gamespy. I use
gamespy to create socket, connect to lobby, select opponent
and do the NAT punch-through. In next step I close gamespy
socket, initialize enet library and try to create enet host
with same port (in my case I pass ip as empty string) and
then start connection to other party. It works, but not
always. I am using three computers right now: pc vista, pc xp
and mac osx 10.7.4. On mac sometimes (not always) I cannot
create enet host (even if i try to create host with different
ports, 100 retries), here's the code:
retries = 101;
enet_address_set_host (&enet.gAddress, ip);
do {
enet.gAddress.port = port;
enet.gHost = enet_host_create (&enet.gAddress , 1 , 2, 0
,0 );
if (enet.gHost == NULL)
{
printf ( "An error occurred while trying to create an
ENet host(%s:%d).\n",ip,port);
port++; // HACK
}
else
printf( "host created.\n");
} while (enet.gHost == NULL && (--retries > 0));
Any ideas?
Thank you!
Martin
_______________________________________________
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] <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