/enet_peer_ping()/! I had no idea that existed.

This is making me want to create better documentation for ENet even more. The tutorial is nice but not enough alone.

------------------------------------------------------------------------

Nicholas J Ingrassellino
LifebloodNetworks.com <http://www.lifebloodnetworks.com/> || [email protected] <mailto:[email protected]>

"The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying."
- John Carmack on software patents


On 11/05/2010 11:06 AM, Nuno Silva wrote:
Or you could just call enet_ping :D
At least AFAIR there's a function named like that.

On Fri, Nov 5, 2010 at 2:58 PM, Nicholas J Ingrassellino <[email protected] <mailto:[email protected]>> wrote:

    The same thing happens to me if the client does nothing (no events
    to send, ect) even when calling enet_host_service() on a regular
    basis. I just added an unreliable "ping packet" every once in a
    while which solved it.

    ------------------------------------------------------------------------

    Nicholas J Ingrassellino
    LifebloodNetworks.com <http://www.lifebloodnetworks.com/> ||
    [email protected] <mailto:[email protected]>

    "The idea that I can be presented with a problem, set out to
    logically solve it with the tools at hand, and wind up with a
    program that could not be legally used because someone else
    followed the same logical steps some years ago and filed for a
    patent on it is horrifying."
    - John Carmack on software patents


    On 11/05/2010 10:10 AM, Nuno Silva wrote:
    Hey there.
    On your while(true) on the client you must also call
    enet_host_service in order for the client to keep its connection
    alive.

    2010/11/5 Вячеслав Блинников <[email protected]
    <mailto:[email protected]>>

        Hello!

        I wrote the base client accordingly the tutorial and the
        client which
        read inputting through console characters and send it to the
        server.
        Everything is fine but just first 30 seconds - then happen the
        disconnection (message "Client information disconnected" shown).
        What is wrong with my code?



        Server code:

        #include <cstdio>
        #include "enet\enet.h"
        int main(int argc, int** argv)
        {
               if (enet_initialize () != 0)
           {
               printf ("An error occurred while initializing ENet.\n");
               goto END;
           }
               ENetAddress address;
               address.host = ENET_HOST_ANY;
               address.port = 1234;
               ENetHost* server = enet_host_create ( & address, 32,
        2, 0, 0);
           if (server == NULL)
           {
               printf("An error occurred while trying to create an ENet
        client host.\n");
               goto END;
           }
               ENetEvent event;
        WAIT_FOR_AN_EVENT:
               enet_host_service(server, &event, 5);
               switch (event.type)
               {
               case ENET_EVENT_TYPE_CONNECT:
                       printf ("A new client connected from
        %x:%u.\n", event.peer ->
        address.host, event.peer -> address.port);
                       event.peer -> data = "Client information";
                       break;

               case ENET_EVENT_TYPE_RECEIVE:
                       printf ("A packet of length %u was received
        from %s on channel %u.
        Containings:\n  %s", event.packet -> dataLength, event.peer
        -> data,
        event.channelID, event.packet -> data);
                       enet_packet_destroy (event.packet);
                       break;

               case ENET_EVENT_TYPE_DISCONNECT:
                       printf ("%s disconected.\n", event.peer -> data);
                       event.peer -> data = NULL;
                       break;

               case ENET_EVENT_TYPE_NONE:
                       break;
               }
               goto WAIT_FOR_AN_EVENT;

               printf("host halted.\n");

        END:
               getchar();
               return 0;
        }



        Client code:

        #include <cstdio>
        #include "enet\enet.h"
        #include <vector>
        int main(int argc, int** argv)
        {
               //where reading console data will be stored:
               std::vector<char> buffer;

               if (enet_initialize () != 0)
           {
               printf ("An error occurred while initializing ENet.\n");
               goto END;
           }
               ENetHost* client        = enet_host_create ( NULL, 1,
        2, 57600 / 8, 14400 / 8);
               if(client == 0l)
               {
                       printf("An error occurred while trying to
        create an ENet server host.\n");
                       goto END;
               }
               ENetAddress address;
               enet_address_set_host(&address, "localhost");
               address.port    = 1234;

               ENetPeer* peer  = enet_host_connect(client, &address,
        2, 0);
               if(peer == 0l)
               {
                       printf("No available peers for initiating an
        ENet connection.\n");
                       goto END;
               }

               ENetEvent event;
               if (enet_host_service (client, & event, 5000) > 0 &&
        event.type ==
        ENET_EVENT_TYPE_CONNECT)
               {
                       puts ("Connection to localhost:1234 succeeded.");
               }
               else
               {
                       enet_peer_reset (peer);

                       puts ("Connection to localhost:1234 failed.");
                       goto END;
               }

               printf("Input some data which will be sent to
        server...\n");

        INPUT_DATA:
               buffer.clear();
               while(true)
               {
                       char character = getchar();
                       buffer.push_back(character);
                       if(character == '\n')
                       {
                               break;
                       }
               }
               buffer.push_back('\0');

               ENetPacket * packet = enet_packet_create(&buffer[0],
        buffer.size(),
        ENET_PACKET_FLAG_RELIABLE);
               enet_peer_send (peer, 0, packet);
               enet_host_flush(client);
               goto INPUT_DATA;

        END:
               getchar();

               return 0;
        }
        _______________________________________________
        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

Reply via email to