Mon, 31 Mar 2014 14:08:00 +0200
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);