From f217acf535a8d3557b08345155d3016e86aa58ae Mon Sep 17 00:00:00 2001 From: kdx Date: Wed, 30 Aug 2023 05:55:28 +0200 Subject: simple data transfer --- inc/netcode.h | 6 +++--- src/main.c | 15 +++++++++++++++ src/netcode.c | 14 ++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/inc/netcode.h b/inc/netcode.h index 148a519..8d79619 100644 --- a/inc/netcode.h +++ b/inc/netcode.h @@ -1,12 +1,12 @@ #pragma once #include -#include int netcode_init_host(uint16_t port); int netcode_init_client(const char *host, uint16_t port); void netcode_deinit(void); +int netcode_host(void); -int netcode_send(void *data, size_t size); -int netcode_recv(void *data, size_t size); +int netcode_send(void *data, int size); +int netcode_recv(void *data, int size); int netcode_ping(void); diff --git a/src/main.c b/src/main.c index b56f427..2eacd47 100644 --- a/src/main.c +++ b/src/main.c @@ -11,20 +11,35 @@ main(int argc, char **argv) { (void)argc, (void)argv; + char p1_white; if (argc > 1) { log_info("client, connecting to %s", argv[1]); if (netcode_init_client(argv[1], 8177)) { log_error("netcode_init_client failed"); return -1; } + if (netcode_recv(&p1_white, 1)) { + log_error("netcode_send failed"); + netcode_deinit(); + return -1; + } } else { log_info("host"); if (netcode_init_host(8177)) { log_error("netcode_init_host failed"); return -1; } + srand(time(NULL)); + p1_white = rand() % 2; + if (netcode_send(&p1_white, 1)) { + log_error("netcode_send failed"); + netcode_deinit(); + return -1; + } } + log_info("i'm %s", (p1_white ^ netcode_host()) ? "black" : "white"); + if (TZR_Init(.width=DWIDTH, .height=DHEIGHT, .target_fps=FPS)) return 1; if (atexit(deinit)) { diff --git a/src/netcode.c b/src/netcode.c index 5ae5990..3b77fa5 100644 --- a/src/netcode.c +++ b/src/netcode.c @@ -81,9 +81,15 @@ netcode_deinit(void) } int -netcode_send(void *data, size_t size) +netcode_host(void) { - if (SDLNet_TCP_Send(_sock_other, data, size) < 0) { + return (_sock_host != NULL); +} + +int +netcode_send(void *data, int size) +{ + if (SDLNet_TCP_Send(_sock_other, data, size) != size) { log_error("%s", SDLNet_GetError()); return -1; } @@ -91,9 +97,9 @@ netcode_send(void *data, size_t size) } int -netcode_recv(void *data, size_t size) +netcode_recv(void *data, int size) { - if (SDLNet_TCP_Recv(_sock_other, data, size) < 0) { + if (SDLNet_TCP_Recv(_sock_other, data, size) != size) { log_error("%s", SDLNet_GetError()); return -1; } -- cgit v1.2.3