[ENet-discuss] Failed to connect to local server from iOS real device BUT do work when using desktop client

Meir Yanovich meiry242 at gmail.com
Tue Aug 16 11:38:14 PDT 2016


Hello list ,
As i continue to check this great lib with iOS device which is iphone 5 iOS
8.3
I have strange ( or not ) connection error
When i try to connect the server which is running from my xCode .  and
Iphone app is running from xcode also .
The line :

if (enet_host_service(client, &event, 1000) > 0 &&  event.type ==
ENET_EVENT_TYPE_CONNECT)

Dosn't pass and jumps to :

enet_peer_reset(peer);

BUT when i run this code both from my desktop as simple client/server app ,
every thing is working just fine .
here is the code which i take from some internet site .
notice i set the HOST to be my Mac  : echo $HOSTNAME
mybe this is the problem and the iPhone can't connect my Mac .. i dont know
how can i check this ?
Thanks
Here is the code :

Client desktop :

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

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include "enet/enet.h"

#define BUFFERSIZE 1024

#define PORT 9991


ENetAddress  address;

ENetHost   *server;

ENetEvent  event;

ENetPacket      *packet;


char    buffer[BUFFERSIZE];


int  main(int argc, char ** argv) {

    int  i;



    if (enet_initialize() != 0) {

        printf("Could not initialize enet.");

        return 0;

    }



    address.host = ENET_HOST_ANY;

    address.port = PORT;



    server = enet_host_create(&address, 100, 2, 0, 0);



    if (server == NULL) {

        printf("Could not start server.\n");

        return 0;

    }

    else

    {

        printf("Server Started host: %d on port:%d.\n",address.host, address
.port);


    }



    while (1) {

        while (enet_host_service(server, &event, 1000) > 0) {

            switch (event.type) {



                case ENET_EVENT_TYPE_CONNECT:

                    break;



                case ENET_EVENT_TYPE_RECEIVE:

                    if (event.peer->data == NULL) {

                        event.peer->data =

                        malloc(strlen((char*) event.packet->data)+1);

                        strcpy((char*) event.peer->data, (char*)

                               event.packet->data);



                        sprintf(buffer, "%s has connected\n",

                                (char*) event.packet->data);

                        packet = enet_packet_create(buffer,

                                                    strlen(buffer)+1, 0);

                        enet_host_broadcast(server, 1, packet);

                        enet_host_flush(server);

                    } else {

                        for (i=0; i<server->peerCount; i++) {

                            if (&server->peers[i] != event.peer) {

                                sprintf(buffer, "%s: %s",

                                        (char*) event.peer->data, (char*)

                                        event.packet->data);

                                packet = enet_packet_create(buffer,

                                                            strlen(buffer)+1,
0);

                                enet_peer_send(&server->peers[i], 0,

                                               packet);

                                enet_host_flush(server);

                            } else {



                            }

                        }

                    }

                    break;



                case ENET_EVENT_TYPE_DISCONNECT:

                    sprintf(buffer, "%s has disconnected.", (char*)

                            event.peer->data);

                    packet = enet_packet_create(buffer, strlen(buffer)+1, 0
);

                    enet_host_broadcast(server, 1, packet);

                    free(event.peer->data);

                    event.peer->data = NULL;

                    break;



                default:

                    printf("Tick tock.\n");

                    break;

            }



        }

    }



    enet_host_destroy(server);

    enet_deinitialize();

    return 0;

}



Client Iphone device ( part of cpp game engine ) compiles fine .

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

char  buffer[BUFFERSIZE];



    ENetHost  *client;

    ENetAddress  address;

    ENetEvent  event;

    ENetPeer  *peer;

    ENetPacket  *packet;

    int connected=0;

    if (enet_initialize() != 0) {

        log("Could not initialize enet.\n");

        return false;

    }

    client = enet_host_create(NULL, 1, 2, 5760/8, 1440/8);



    if (client == NULL) {

        log("Could not create client.\n");

        return false;

    }



    enet_address_set_host(&address, HOST);

    address.port = PORT;



    peer = enet_host_connect(client, &address, 2, 0);



    if (peer == NULL) {

        log("Could not connect to server\n");

        return false;

    }



    if (enet_host_service(client, &event, 1000) > 0 &&

        event.type == ENET_EVENT_TYPE_CONNECT) {



        log("Connection to %s succeeded.\n", HOST);

        connected++;



        strncpy(buffer, "Meiry Test", BUFFERSIZE);

        packet = enet_packet_create(buffer, strlen(buffer)+1,

                                    ENET_PACKET_FLAG_RELIABLE);

        enet_peer_send(peer, 0, packet);



    } else {

        enet_peer_reset(peer);

        log("Could not connect to %s.\n", HOST);

        return false;

    }




Server

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

#include <stdio.h>


#include <string.h>

#include <stdlib.h>

#include "enet/enet.h"

#define BUFFERSIZE 1024

#define PORT 9991


ENetAddress  address;

ENetHost   *server;

ENetEvent  event;

ENetPacket      *packet;


char    buffer[BUFFERSIZE];


int  main(int argc, char ** argv) {

    int  i;



    if (enet_initialize() != 0) {

        printf("Could not initialize enet.");

        return 0;

    }



    address.host = ENET_HOST_ANY;

    address.port = PORT;



    server = enet_host_create(&address, 100, 2, 0, 0);



    if (server == NULL) {

        printf("Could not start server.\n");

        return 0;

    }

    else

    {

        printf("Server Started host: %d on port:%d.\n",address.host, address
.port);


    }



    while (1) {

        while (enet_host_service(server, &event, 1000) > 0) {

            switch (event.type) {



                case ENET_EVENT_TYPE_CONNECT:

                    break;



                case ENET_EVENT_TYPE_RECEIVE:

                    if (event.peer->data == NULL) {

                        event.peer->data =

                        malloc(strlen((char*) event.packet->data)+1);

                        strcpy((char*) event.peer->data, (char*)

                               event.packet->data);



                        sprintf(buffer, "%s has connected\n",

                                (char*) event.packet->data);

                        packet = enet_packet_create(buffer,

                                                    strlen(buffer)+1, 0);

                        enet_host_broadcast(server, 1, packet);

                        enet_host_flush(server);

                    } else {

                        for (i=0; i<server->peerCount; i++) {

                            if (&server->peers[i] != event.peer) {

                                sprintf(buffer, "%s: %s",

                                        (char*) event.peer->data, (char*)

                                        event.packet->data);

                                packet = enet_packet_create(buffer,

                                                            strlen(buffer)+1,
0);

                                enet_peer_send(&server->peers[i], 0,

                                               packet);

                                enet_host_flush(server);

                            } else {



                            }

                        }

                    }

                    break;



                case ENET_EVENT_TYPE_DISCONNECT:

                    sprintf(buffer, "%s has disconnected.", (char*)

                            event.peer->data);

                    packet = enet_packet_create(buffer, strlen(buffer)+1, 0
);

                    enet_host_broadcast(server, 1, packet);

                    free(event.peer->data);

                    event.peer->data = NULL;

                    break;



                default:

                    printf("Tick tock.\n");

                    break;

            }



        }

    }



    enet_host_destroy(server);

    enet_deinitialize();

    return 0;

}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cubik.org/pipermail/enet-discuss/attachments/20160816/f2362c1c/attachment-0001.html>


More information about the ENet-discuss mailing list