summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Halle <niklas@niklashalle.net>2020-06-01 15:05:36 +0200
committerNiklas Halle <niklas@niklashalle.net>2020-06-01 15:05:36 +0200
commit85131d8acfca55810205af625d65358f006f3de7 (patch)
tree6075f28c7552b06bbc3343375c317442dbabb183
parentd6c6df06b0fcfa275cd4a6e3de15cd29f4693088 (diff)
downloadbetriebssysteme-85131d8acfca55810205af625d65358f006f3de7.tar.gz
betriebssysteme-85131d8acfca55810205af625d65358f006f3de7.zip
improvements
-rwxr-xr-x03_exercise/cli/clientbin22816 -> 22904 bytes
-rw-r--r--03_exercise/cli/client.c12
-rwxr-xr-x03_exercise/srv/serverbin26256 -> 26256 bytes
-rw-r--r--03_exercise/srv/server.c17
4 files changed, 19 insertions, 10 deletions
diff --git a/03_exercise/cli/client b/03_exercise/cli/client
index abcfd45..eb8470f 100755
--- a/03_exercise/cli/client
+++ b/03_exercise/cli/client
Binary files 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
--- a/03_exercise/srv/server
+++ b/03_exercise/srv/server
Binary files 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");