improved network performance

Mon, 31 Mar 2014 14:08:00 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 31 Mar 2014 14:08:00 +0200
changeset 22
41bbfd4d17a3
parent 21
2e5846019b4f
child 23
824c9522ce66

improved network performance

src/game.c file | annotate | diff | comparison | revisions
src/network.c file | annotate | diff | comparison | revisions
src/network.h file | annotate | diff | comparison | revisions
src/server.c file | annotate | diff | comparison | revisions
     1.1 --- a/src/game.c	Mon Mar 31 14:00:58 2014 +0200
     1.2 +++ b/src/game.c	Mon Mar 31 14:08:00 2014 +0200
     1.3 @@ -159,8 +159,7 @@
     1.4              int eval_result = eval_move(board, mycolor, movestr, &move);
     1.5              switch (eval_result) {
     1.6              case VALID_MOVE_SYNTAX:
     1.7 -                net_send_code(opponent, NETCODE_MOVE);
     1.8 -                net_send_data(opponent, &move, sizeof(Move));
     1.9 +                net_send_data(opponent, NETCODE_MOVE, &move, sizeof(Move));
    1.10                  code = net_recieve_code(opponent);
    1.11                  move.check = code == NETCODE_CHECK;
    1.12                  move.checkmate = code == NETCODE_CHECKMATE;
     2.1 --- a/src/network.c	Mon Mar 31 14:00:58 2014 +0200
     2.2 +++ b/src/network.c	Mon Mar 31 14:08:00 2014 +0200
     2.3 @@ -113,19 +113,21 @@
     2.4      return EXIT_SUCCESS;
     2.5  }
     2.6  
     2.7 -void net_send_code(int socket, uint32_t code) {
     2.8 -    code = htonl(code);
     2.9 -    send(socket, &code, sizeof(uint32_t), 0);
    2.10 +void net_send_code(int socket, uint8_t code) {
    2.11 +    send(socket, &code, sizeof(uint8_t), 0);
    2.12  }
    2.13  
    2.14 -void net_send_data(int socket, void *data, size_t len) {
    2.15 -    send(socket, data, len, 0);
    2.16 +void net_send_data(int socket, uint8_t code, void *data, size_t len) {
    2.17 +    uint8_t pkg[len+1];
    2.18 +    pkg[0] = code;
    2.19 +    memcpy(pkg+1, data, len);
    2.20 +    send(socket, pkg, len+1, 0);
    2.21  }
    2.22  
    2.23 -uint32_t net_recieve_code(int socket) {
    2.24 -    uint32_t code;
    2.25 -    recv(socket, &code, sizeof(uint32_t), 0);
    2.26 -    return ntohl(code);
    2.27 +uint8_t net_recieve_code(int socket) {
    2.28 +    uint8_t code;
    2.29 +    recv(socket, &code, sizeof(uint8_t), 0);
    2.30 +    return code;
    2.31  }
    2.32  
    2.33  void net_recieve_data(int socket, void *data, size_t len) {
     3.1 --- a/src/network.h	Mon Mar 31 14:00:58 2014 +0200
     3.2 +++ b/src/network.h	Mon Mar 31 14:08:00 2014 +0200
     3.3 @@ -46,7 +46,7 @@
     3.4  #define NETCODE_CHECK 0x23
     3.5  #define NETCODE_CHECKMATE 0x24
     3.6      
     3.7 -#define NETCODE_VERSION 5
     3.8 +#define NETCODE_VERSION 6
     3.9  
    3.10  typedef struct {
    3.11      int fd; /* -1, if we are the client */
    3.12 @@ -67,9 +67,9 @@
    3.13  int net_destroy(Server *server);
    3.14  int net_connect(Server *server);
    3.15  
    3.16 -void net_send_code(int socket, uint32_t code);
    3.17 -void net_send_data(int socket, void *data, size_t len);
    3.18 -uint32_t net_recieve_code(int socket);
    3.19 +void net_send_code(int socket, uint8_t code);
    3.20 +void net_send_data(int socket, uint8_t code, void *data, size_t len);
    3.21 +uint8_t net_recieve_code(int socket);
    3.22  void net_recieve_data(int socket, void *data, size_t len);
    3.23  
    3.24  
     4.1 --- a/src/server.c	Mon Mar 31 14:00:58 2014 +0200
     4.2 +++ b/src/server.c	Mon Mar 31 14:08:00 2014 +0200
     4.3 @@ -76,8 +76,8 @@
     4.4      }
     4.5  
     4.6      int fd = server.client->fd;
     4.7 -    net_send_code(fd, NETCODE_GAMEINFO);
     4.8 -    net_send_data(fd, &(settings->gameinfo), sizeof(settings->gameinfo));
     4.9 +    net_send_data(fd, NETCODE_GAMEINFO,
    4.10 +        &(settings->gameinfo), sizeof(Gameinfo));
    4.11      printw("\rClient connected - awaiting challenge acceptance...");
    4.12      refresh();
    4.13      int code = net_recieve_code(fd);

mercurial