diff options
Diffstat (limited to '03_exercise')
-rwxr-xr-x | 03_exercise/cli/client | bin | 22816 -> 22904 bytes | |||
-rw-r--r-- | 03_exercise/cli/client.c | 12 | ||||
-rwxr-xr-x | 03_exercise/srv/server | bin | 26256 -> 26256 bytes | |||
-rw-r--r-- | 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 Binary files differindex abcfd45..eb8470f 100755 --- a/03_exercise/cli/client +++ b/03_exercise/cli/client 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 Binary files differindex d866493..2402d7b 100755 --- a/03_exercise/srv/server +++ b/03_exercise/srv/server 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"); |