Listing 3. Server Code 1 #include 2 #include 3 #include 4 #include 5 #include "config.h" 6 ENetAddress address; 7 ENetHost *server; 8 ENetEvent event; 9 ENetPacket *packet; 10 char buffer[BUFFERSIZE]; 11 int main(int argc, char ** argv) { 12 int i; 13 if (enet_initialize() != 0) { 14 printf("Could not initialize enet."); 15 return 0; 16 } 17 address.host = ENET_HOST_ANY; 18 address.port = PORT; 19 server = enet_host_create(&address, 100, 2, 0, 0); 20 if (server == NULL) { 21 printf("Could not start server.\n"); 22 return 0; 23 } 24 while (1) { 25 while (enet_host_service(server, &event, 1000) > 0) { 26 switch (event.type) { 27 case ENET_EVENT_TYPE_CONNECT: 28 break; 29 case ENET_EVENT_TYPE_RECEIVE: 30 if (event.peer->data == NULL) { 31 event.peer->data = malloc(strlen((char*) event.packet->data)+1); 32 strcpy((char*) event.peer->data, (char*) event.packet->data); 33 sprintf(buffer, "%s has connected\n", (char*) event.packet->data); 34 packet = enet_packet_create(buffer, strlen(buffer)+1, 0); 35 enet_host_broadcast(server, 1, packet); 36 enet_host_flush(server); 37 } else { 38 for (i=0; ipeerCount; i++) { 39 if (&server->peers[i] != event.peer) { 40 sprintf(buffer, "%s: %s", 41 (char*) event.peer->data, (char*) event.packet->data); 42 packet = enet_packet_create(buffer, strlen(buffer)+1, 0); 43 enet_peer_send(&server->peers[i], 0, packet); 44 enet_host_flush(server); 45 } else { 46 } 47 } 48 } 49 break; 50 case ENET_EVENT_TYPE_DISCONNECT: 51 sprintf(buffer, "%s has disconnected.", (char*) event.peer->data); 52 packet = enet_packet_create(buffer, strlen(buffer)+1, 0); 53 enet_host_broadcast(server, 1, packet); 54 free(event.peer->data); 55 event.peer->data = NULL; 56 break; 57 default: 58 printf("Tick tock.\n"); 59 break; 60 } 61 } 62 } 63 enet_host_destroy(server); 64 enet_deinitialize(); 65 }