[ENet-discuss] problem: no client connection events from server.

Ryan Gumbs project.phelius at gmail.com
Mon Dec 12 05:32:44 PST 2005


Thx for responding.
I was already calling enet_host_service() in my main loop, but I figured it out.
It seems the server doesn't actually see the connection until the client sends
the first packet. i guess that makes sense since it's udp.

So now I'm up an running.
Thank you guys for making this awesome library.
If I ever make anything worthwhile I'll be sure to credit u makers of enet.
Phelius.


On 12/11/05, Lee Salzman <lsalzman1 at cox.net> wrote:
> That would be because you're not servicing the client at all. An ENet
> host (the library makes no real distinction between server/client) only
> functions if you are actually calling enet_host_service() on it.
>
> Lee
>
> Ryan Gumbs wrote:
> > Helllo. I'm new to ENet and I'm having trouble getting the tutorial
> > source to work.
> > here is my simple code. I've compiled enet and my source on Debian Linux 2.6.12
> > My problem is that the client prints messages saying it connected,
> > however the server never receives the connection event from client.
> > Oddly enough, it does receive/print events for disconnects.
> > Maybe that's just because it lost contact with the client.
> >
> > This is pretty much the tutorial source code verbatim.
> > Any help would be much appreciated.
> > thx,
> > Phelius.
> >
> >
> > to start as a server:
> >
> >>./try 1
> >
> > to start as a client
> >
> >>./try
> >
> >
> >
> > try.c ===========
> > #include <stdio.h>
> > #include "enet/enet.h"
> >
> >     ENetHost * server=0;
> >     ENetHost * client=0;
> >
> > int start_server () {
> >     ENetAddress address;
> >
> >     /* Bind the server to the default localhost.     */
> >     /* A specific host address can be specified by   */
> >     /* enet_address_set_host (& address, "x.x.x.x"); */
> >
> >     address.host = ENET_HOST_ANY;
> >     /* Bind the server to port 1234. */
> >     address.port = 12345;
> >
> >     server = enet_host_create (& address /* the address to bind the
> > server host to */,
> >                                  32      /* allow up to 32 clients
> > and/or outgoing connections */,
> >                                   0      /* assume any amount of
> > incoming bandwidth */,
> >                                   0      /* assume any amount of
> > outgoing bandwidth */);
> >     if (server == NULL)
> >     {
> >         fprintf (stderr,
> >                  "An error occurred while trying to create an ENet
> > server host.\n");
> >         exit (EXIT_FAILURE);
> >     }
> > printf ("server started\n");
> > fflush(stdout);
> > return 0;
> > }
> >
> >
> > int start_client() {
> > ENetAddress address;
> > ENetEvent event;
> > ENetPeer *peer;
> >
> >
> >     client = enet_host_create (NULL /* create a client host */,
> >                 1 /* only allow 1 outgoing connection */,
> >                 57600 / 8 /* 56K modem with 56 Kbps downstream bandwidth */,
> >                 14400 / 8 /* 56K modem with 14 Kbps upstream bandwidth */);
> >
> >     if (client == NULL)
> >     {
> >         fprintf (stderr,
> >                  "An error occurred while trying to create an ENet
> > client host.\n");
> >         exit (EXIT_FAILURE);
> >     }
> >
> >
> >
> > /* Connect to some.server.net:1234. */
> >     enet_address_set_host (& address, "127.0.0.1");
> >     address.port = 12345;
> >
> >     /* Initiate the connection, allocating the two channels 0 and 1. */
> >     peer = enet_host_connect (client, & address, 2);
> >
> >     if (peer == NULL)
> >     {
> >        fprintf (stderr,
> >                 "No available peers for initiating an ENet connection.\n");
> >        exit (EXIT_FAILURE);
> >     }
> >
> >     // Wait up to 5 seconds for the connection attempt to succeed.
> >     if (enet_host_service (client, & event, 5000) > 0 &&
> >         event.type == ENET_EVENT_TYPE_CONNECT)
> >     {
> >         puts ("Connection to some.server.net:1234 succeeded.\n");
> >     }
> >     else
> >     {
> >         /* Either the 5 seconds are up or a disconnect event was */
> >         /* received. Reset the peer in the event the 5 seconds   */
> >         /* had run out without any significant event.            */
> >         enet_peer_reset (peer);
> >
> >         puts ("Connection to some.server.net:1234 failed.\n");
> >       exit(EXIT_FAILURE);
> >     }
> > fflush(stdout);
> > return 0;
> > }
> >
> >
> >
> > int do_server_events() {
> >     ENetEvent event;
> >
> >     /* Wait up to 1000 milliseconds for an event. */
> >     while (enet_host_service (server, & event, 1000) > 0)
> >     {
> >         switch (event.type)
> >         {
> >         case ENET_EVENT_TYPE_CONNECT:
> >       printf ("A new connection\n");
> >       fflush(stdout);
> > //            printf ("A new client connected from %x:%u.\n",
> > //                    event.peer -> address.host,
> > //                    event.peer -> address.port);
> >
> >             /* Store any relevant client information here. */
> >             event.peer -> data = "Client information";
> >
> >             break;
> >
> > /*        case ENET_EVENT_TYPE_RECEIVE:
> >             printf ("A packet of length %u containing %s was received
> > from %s on channel %u.\n",
> >                     event.packet -> dataLength,
> >                     event.packet -> data,
> >                     event.peer -> data,
> >                     event.channelID);
> >               fflush(stdout);
> >             //* Clean up the packet now that we're done using it.
> >             enet_packet_destroy (event.packet);
> >
> >             break;*/
> >
> >         case ENET_EVENT_TYPE_DISCONNECT:
> >             printf ("%s disconected.\n", event.peer -> data);
> >               fflush(stdout);
> >             /* Reset the peer's client information. */
> >
> >             event.peer -> data = NULL;
> >         }
> >     }
> >
> > }
> >
> >
> >
> > int main(int argc, char **argv) {
> >
> >    if (enet_initialize () != 0)
> >     {
> >         fprintf (stderr, "An error occurred while initializing ENet.\n");
> >         return EXIT_FAILURE;
> >     }
> >     atexit (enet_deinitialize);
> >
> > if (argc==2) { // server
> >       start_server();
> >       while (1) {
> >               do_server_events();
> >               }
> >       }
> > else {
> >       start_client();
> >       while (1) {
> >               }
> >       }
> > }
> >
> > _______________________________________________
> > ENet-discuss mailing list
> > ENet-discuss at cubik.org
> > http://lists.cubik.org/mailman/listinfo/enet-discuss
> >
>
> _______________________________________________
> ENet-discuss mailing list
> ENet-discuss at cubik.org
> http://lists.cubik.org/mailman/listinfo/enet-discuss
>



More information about the ENet-discuss mailing list