C
Hallo Leute!
Ich versuche mich gerade mit der Enetbibliothek, da ich diese für mein Spiel benutzen möchte. Aber ich schaffe es unmöglich eine Verbindung zwischen Server und Client aufzubauen bzw. ein funktionierendes Beispiel zu finden.
//////Includes//////
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "enet/enet.h"
int main()
{
short i;
ENetAddress address;
ENetHost * server;
ENetHost * client;
ENetEvent event;
ENetPeer *peer;
if (enet_initialize() == -1) {printf("Error beim initialisieren!\n");}
else {printf("Initialisierung erfolgreich!\n");}
scanf("%ld",&i);
switch(i)
{
case 1:
/* 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 = 6001;
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);
}
else
{
printf("Server initialisiert!");
}
while (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);
/* Store any relevant client information here. */
//event.peer -> data = "Client information";
break;
}
}
break;
case 2:
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);
}
else
{
printf("Client initialisiert!");
}
/* Connect to some.server.net:1234. */
enet_address_set_host (& address, "255.255.255.255");
address.port = 6001;
/* 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);
}
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);
/* Store any relevant client information here. */
//event.peer -> data = "Client information";
break;
}
}
break;
}
getch();
}
Kann mir bitte jemand einen Beispielsource geben, der funktioniert oder mir sagen was ich falsch mache?
PS: Den Code von oben habe ich mir aus den Tutorials der Enetseite zusammengebastelt.
Danke für eure Hilfe!
[EDIT] Ich habe meinen Fehler herausgefunden. Es lag daran, dass ich enet_host_service nur einmal aufgerufen habe. Es sollte aber in einer Schleife aufgerufen werden! Der Thread kann geschlossen werden!
mfg,
C_Cheaf