0

iPhone 5 iOS 8.3 である iOS デバイスでこの素晴らしいライブラリをチェックし続けると 、xCode から実行されているサーバーに接続しようとすると、
奇妙な (またはそうでない) 接続エラーが発生します。
また、iPhoneアプリはxcodeからも実行されています。
この線 :
if (enet_host_service(client, &event, 1000) > 0 && event.type == ENET_EVENT_TYPE_CONNECT)

パスせずにジャンプします:
enet_peer_reset(peer);

しかし、デスクトップから単純なクライアント/サーバーアプリとしてこのコードを実行すると、すべてが正常に機能します。
これは私がいくつかのインターネットサイトから取ったコードです。
HOST を自分の Mac に設定したことに注意してくださいecho $HOSTNAME。たぶんこれが問題で、iPhone が Mac に接続できません..
どうすれば確認できるのかわかりません。
ありがとう
コードは次のとおりです。

クライアント デスクトップ:

#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;

}

クライアント Iphone デバイス (cpp ゲーム エンジンの一部) は正常にコンパイルされます。


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;

    }

サーバ


#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;

}
4

0 に答える 0