Listing 2. Client Code

 1  #include <stdio.h>
 2  #include <string.h>
 3  #include <enet/enet.h>
 4  #include "config.h"

 5  #include <unistd.h>

 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  }

