[ENet-discuss] problem: no client connection events from server.
Lee Salzman
lsalzman1 at cox.net
Sun Dec 11 15:31:13 PST 2005
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
>
More information about the ENet-discuss
mailing list