From 85131d8acfca55810205af625d65358f006f3de7 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Mon, 1 Jun 2020 15:05:36 +0200 Subject: improvements --- 03_exercise/cli/client | Bin 22816 -> 22904 bytes 03_exercise/cli/client.c | 12 ++++++++---- 03_exercise/srv/server | Bin 26256 -> 26256 bytes 03_exercise/srv/server.c | 17 +++++++++++------ 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/03_exercise/cli/client b/03_exercise/cli/client index abcfd45..eb8470f 100755 Binary files a/03_exercise/cli/client and b/03_exercise/cli/client differ diff --git a/03_exercise/cli/client.c b/03_exercise/cli/client.c index 3cd6f1b..a98942d 100644 --- a/03_exercise/cli/client.c +++ b/03_exercise/cli/client.c @@ -10,6 +10,8 @@ #define PORT 9000 #define HOST "127.0.0.1" +#define BUF_SIZE 256 + static inline void die(const char *msg) { perror(msg); exit(-1); @@ -21,7 +23,7 @@ int main() { .sin_port = htons(PORT), .sin_addr.s_addr = inet_addr(HOST) }; - char buf[256]; + char buf[BUF_SIZE]; int cfd; if ((cfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) @@ -35,6 +37,7 @@ int main() { __ssize_t length; while (1) { + printf("%s > ", HOST); if ((length = getline(&line, &cap, stdin)) < 0) { fprintf(stderr, "Failed to read from STDIN"); fflush(stderr); @@ -54,13 +57,14 @@ int main() { strncpy(buf, line, strlen(line)); - if (write(cfd, buf, sizeof(buf)) < 0) + if (write(cfd, buf, BUF_SIZE) < 0) die("Could not send message"); - if (read(cfd, buf, sizeof(buf)) < 0) + if (read(cfd, buf, BUF_SIZE) < 0) die("Could not receive message"); - printf("$> %s\n", buf); + printf("%s\n", buf); + memset(buf, 0, BUF_SIZE); } close(cfd); diff --git a/03_exercise/srv/server b/03_exercise/srv/server index d866493..2402d7b 100755 Binary files a/03_exercise/srv/server and b/03_exercise/srv/server differ diff --git a/03_exercise/srv/server.c b/03_exercise/srv/server.c index bb2b3ab..818036a 100644 --- a/03_exercise/srv/server.c +++ b/03_exercise/srv/server.c @@ -9,6 +9,8 @@ #define PORT 9000 +#define BUF_SIZE 256 + static inline void die(const char *msg) { perror(msg); exit(-1); @@ -20,8 +22,8 @@ int main() { socklen_t sad_sz = sizeof(struct sockaddr_in); int sfd, cfd; ssize_t bytes; - char in_buf[256]; - char out_buf[256]; + char in_buf[BUF_SIZE]; + char out_buf[BUF_SIZE]; srv_addr.sin_family = AF_INET; srv_addr.sin_port = htons(PORT); @@ -44,11 +46,11 @@ int main() { printf("srv: connected: %s\n", inet_ntoa(cli_addr.sin_addr)); - while ((bytes = read(cfd, in_buf, sizeof(in_buf))) != 0) { + while ((bytes = read(cfd, in_buf, BUF_SIZE)) != 0) { if (bytes < 0) die("Couldn't receive message"); - printf("srv: %s\n", in_buf); + //printf("srv: %s\n", in_buf); if (strcmp(in_buf, "get") == 0) { // TODO: implement get @@ -58,12 +60,15 @@ int main() { strncpy(out_buf, "pong!", sizeof(out_buf)); } else { // TODO: connect our shell implementation - strncpy(out_buf, "got: ", sizeof(out_buf)); - strncpy(out_buf + sizeof("got: "), in_buf, sizeof(out_buf) - sizeof("got: ")); + memcpy(out_buf, "got: ", sizeof(out_buf)); + memcpy(out_buf + sizeof("got: ") - 1, in_buf, BUF_SIZE - sizeof("got: ") + 1); } if (write(cfd, out_buf, sizeof(out_buf)) < 0) die("Couldn't send message"); + + memset(in_buf, 0, BUF_SIZE); + memset(out_buf, 0, BUF_SIZE); } printf("srv: closing down\n"); -- cgit v1.2.3-54-g00ecf