summaryrefslogtreecommitdiffstats
path: root/03_exercise/srv/server.c
diff options
context:
space:
mode:
Diffstat (limited to '03_exercise/srv/server.c')
-rw-r--r--03_exercise/srv/server.c17
1 files changed, 11 insertions, 6 deletions
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");