Listing 2. Client Code 1 #include 2 #include 3 #include 4 #include "config.h" 5 #include 6 char buffer[BUFFERSIZE]; 7 ENetHost *client; 8 ENetAddress address; 9 ENetEvent event; 10 ENetPeer *peer; 11 ENetPacket *packet; 12 int main(int argc, char ** argv) { 13 int connected=0; 14 if (argc != 1) { 15 printf("Usage: client username\n"); 16 exit; 17 } 18 if (enet_initialize() != 0) { 19 printf("Could not initialize enet.\n"); 20 return 0; 21 } 22 client = enet_host_create(NULL, 1, 2, 5760/8, 1440/8); 23 if (client == NULL) { 24 printf("Could not create client.\n"); 25 return 0; 26 } 27 enet_address_set_host(&address, HOST); 28 address.port = PORT; 29 peer = enet_host_connect(client, &address, 2, 0); 30 if (peer == NULL) { 31 printf("Could not connect to server\n"); 32 return 0; 33 } 34 if (enet_host_service(client, &event, 1000) > 0 && 35 event.type == ENET_EVENT_TYPE_CONNECT) { 36 printf("Connection to %s succeeded.\n", HOST); 37 connected++; 38 strncpy(buffer, argv[1], BUFFERSIZE); 39 packet = enet_packet_create(buffer, strlen(buffer)+1, ENET_PACKET_FLAG_RELIABLE); 40 enet_peer_send(peer, 0, packet); 41 } else { 42 enet_peer_reset(peer); 43 printf("Could not connect to %s.\n", HOST); 44 return 0; 45 } 46 while (1) { 47 while (enet_host_service(client, &event, 1000) > 0) { 48 switch (event.type) { 49 case ENET_EVENT_TYPE_RECEIVE: 50 puts( (char*) event.packet->data); 51 break; 52 case ENET_EVENT_TYPE_DISCONNECT: 53 connected=0; 54 printf("You have been disconnected.\n"); 55 return 2; 56 } 57 } 58 if (connected) { 59 printf("Input: "); 60 gets(buffer); 61 if (strlen(buffer) == 0) { continue; } 62 if (strncmp("q", buffer, BUFFERSIZE) == 0) { 63 connected=0; 64 enet_peer_disconnect(peer, 0); 65 continue; 66 } 67 packet = enet_packet_create(buffer, strlen(buffer)+1, ENET_PACKET_FLAG_RELIABLE); 68 enet_peer_send(peer, 0, packet); 69 } 70 } 71 enet_deinitialize(); 72 }