lsalzman / enet

ENet reliable UDP networking library
MIT License
2.73k stars 670 forks source link

What's wrong with my simple client-server code? #199

Closed yov3v closed 2 years ago

yov3v commented 2 years ago

It seems there's no event happening so it prints out "CONNECTION FAILED"..

ChatClient.cpp

#include <iostream>
#include <enet/enet.h>

int main()
{
    if (enet_initialize() != 0)
    {
        fprintf(stderr, "An error occurred while initializing ENet.\n");
    }
    atexit(enet_deinitialize);
    ENetHost* client;
    client = enet_host_create(NULL, 1, 2, 0, 0);

    if (client == NULL)
    {
        fprintf(stderr, "An error occurred while trying to create an ENet client host.\n");
    }
    ENetAddress address;
    ENetPeer* peer;

    enet_address_set_host(&address, "127.0.0.1");
    address.port = 7777;

    peer = enet_host_connect(client, &address, 1, 0);
    if (peer == NULL)
    {
        fprintf(stderr, "No available peers for initiating an ENet connection!");
    }
    ENetEvent event;

    if (enet_host_service(client, &event, 5000) > 0 ) //&& event.type == ENET_EVENT_TYPE_CONNECT
    {
        printf("CONNECTED!");
    }
    else 
    {
        enet_peer_reset(peer);
        printf("CONNECTION FAILED!");
    }
    while (enet_host_service(client, &event, 1000) > 0)
    {
        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);
            break;
        case ENET_EVENT_TYPE_RECEIVE:
            printf("A packet of length %u containing %s was received from %u:%u on channel %u.\n",
                event.packet->dataLength,
                event.packet->data,
                event.peer->address.host,
                event.peer->address.port,
                event.channelID);
            break;
        }
    }

    enet_peer_disconnect(peer, 0);
    while (enet_host_service(client, &event, 3000) > 0)
    {
        switch (event.type)
        {
        case ENET_EVENT_TYPE_RECEIVE:
            enet_packet_destroy(event.packet);
            break;
        case ENET_EVENT_TYPE_DISCONNECT:
            puts("Disconnection succeeded.");
            return EXIT_SUCCESS;
        }
    }
}

ChatServer.cpp

#include <iostream>
#include <enet/enet.h>
int main()
{
    if (enet_initialize() != 0)
    {
        fprintf(stderr, "An error occurred while initializing ENet.\n");
        return EXIT_FAILURE;
    }
    atexit(enet_deinitialize);

    ENetAddress address;
    enet_address_set_host(&address, "127.0.0.1");
    address.port = 7777;

    ENetHost* server;

    server = enet_host_create(&address, 32, 1, 0, 0);

    if (server == NULL)
    {
        fprintf(stderr, "An error occurred while trying to create an ENet server host.\n");
        exit(EXIT_FAILURE);
    }

    ENetEvent event{};

    while (true) //enet_host_service(server, &event, 1000) > 0
    {
        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);
            break;
        case ENET_EVENT_TYPE_RECEIVE:
            printf("A packet of length %u containing %s was received from %x:%u on channel %u.\n",
                event.packet->dataLength,
                event.packet->data,
                event.peer->address.host,
                event.peer->address.port,
                event.channelID);
            break;

        case ENET_EVENT_TYPE_DISCONNECT:
            printf("%u:%u disconnected.\n", event.peer->address.host, event.peer->address.port);
        }
    }

    enet_host_destroy(server);

}
lsalzman commented 2 years ago

You're not calling enet_host_service on the server at all.