diff options
| -rw-r--r-- | src/main.c | 53 | ||||
| -rw-r--r-- | src/net.c | 4 |
2 files changed, 52 insertions, 5 deletions
@@ -2,10 +2,12 @@ #include <curses.h> #include "ui.h" #include "game.h" +#include "net.h" +#include "player.h" int main(int argc, char **argv) { - uint16_t port = 0; + char* port = 0; char *addr; bool servermode = false; @@ -16,13 +18,58 @@ int main(int argc, char **argv) } else if (argc == 2) // Server mode { + int ssock; + int* csocks; + struct player_list players; + int opponents = 3; + char* nickname = "deki"; servermode = true; - port = atoi(argv[1]); + port = argv[1]; + + // start listening + ssock = server_start("12345"); + + // accept client connections + csocks = server_get_players(ssock, opponents); + + players.count = opponents + 1; + players.names[0] = nickname; + + for(int i=0; i<opponents; i++) + { + // wait for greeting from client i and read nick + char* name = server_recv(csocks[i], msg_type_hello); + players.names[i+1] = name; + printf("player connected: len:%d, name:%s\n", strlen(name), name); + } + + // start game and send player list to clients + server_start_game(csocks, opponents, &players); + + close(ssock); + free(csocks); } else if (argc == 3) // Client mode { + int sock; + struct player_list* players; + char* nickname = "schnippi"; addr = argv[1]; - port = atoi(argv[2]); + port = argv[2]; + + // connect to server + sock = client_connect_server(addr, port); + + // greet server and tell nickname + client_hello(sock, nickname); + + // retrieve list of all players from server + players = client_recv(sock, msg_type_start_game); + for(int i=0; i<players->count; i++) + printf("Player %d: %s\n", i, players->names[i]); + + close(sock); + free(players); } ui_init(); @@ -225,7 +225,7 @@ void server_start_game(int* clients, const uint8_t clientcount, const struct pla * @param[in] sock Socket to use * @return Username of client */ -char* server_recv_hello(int sock) +static char* server_recv_hello(int sock) { char buf[12], *name; uint8_t namelen; @@ -276,7 +276,7 @@ void* server_recv(int sock, uint8_t wanted) return result; } -struct player_list* client_recv_player_list(int sock) +static struct player_list* client_recv_player_list(int sock) { uint8_t buf[200]; struct player_list* players; |
