I think to know why it fails you should add some logging to you code and/or attach a debugger so you can see what happens down inside enet. Perhaps gamespy is still listening on the udp port when you try to bind.
On Tue, Sep 18, 2012 at 11:53 AM, Martin Zemblowski < [email protected]> wrote: > 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]> 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]> 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] >>> http://lists.cubik.org/mailman/listinfo/enet-discuss >>> >>> >> >> >> _______________________________________________ >> ENet-discuss mailing >> [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 > [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
