From e1520589de17d08c4bde37f1198f18d012a1f377 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Sat, 6 Jun 2020 14:06:00 +0200 Subject: basic shell works - sometimes goes out of sync (running current command only after issueing the next) --- 03_exercise/echo_server/server.c | 85 +++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 44 deletions(-) (limited to '03_exercise/echo_server') diff --git a/03_exercise/echo_server/server.c b/03_exercise/echo_server/server.c index faf309c..5f647c1 100644 --- a/03_exercise/echo_server/server.c +++ b/03_exercise/echo_server/server.c @@ -7,50 +7,47 @@ #include #include -static inline void die(const char* msg) -{ - perror(msg); - exit(-1); +static inline void die(const char *msg) { + perror(msg); + exit(-1); } -int main() -{ - struct sockaddr_in srv_addr, cli_addr; - int sockopt = 1; - socklen_t sad_sz = sizeof(struct sockaddr_in); - int sfd, cfd; - ssize_t bytes; - char buf[256]; - - srv_addr.sin_family = AF_INET; - srv_addr.sin_port = htons(8000); - srv_addr.sin_addr.s_addr = INADDR_ANY; - - if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - die("Couldn't open the socket"); - - setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char*) &sockopt, sizeof(sockopt)); - - if (bind(sfd, (struct sockaddr*) &srv_addr, sad_sz) < 0) - die("Couldn't bind socket"); - - if (listen(sfd, 1) < 0) - die("Couldn't listen to the socket"); - - cfd = accept(sfd, (struct sockaddr*) &cli_addr, &sad_sz); - if (cfd < 0) - die("Couldn't accept incoming connection"); - - while ((bytes = read(cfd, buf, sizeof(buf))) != 0) - { - if (bytes < 0) - die("Couldn't receive message"); - - if (write(cfd, buf, bytes) < 0) - die("Couldn't send message"); - } - - close(cfd); - close(sfd); - return 0; +int main() { + struct sockaddr_in srv_addr, cli_addr; + int sockopt = 1; + socklen_t sad_sz = sizeof(struct sockaddr_in); + int sfd, cfd; + ssize_t bytes; + char buf[256]; + + srv_addr.sin_family = AF_INET; + srv_addr.sin_port = htons(8000); + srv_addr.sin_addr.s_addr = INADDR_ANY; + + if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + die("Couldn't open the socket"); + + setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &sockopt, sizeof(sockopt)); + + if (bind(sfd, (struct sockaddr *) &srv_addr, sad_sz) < 0) + die("Couldn't bind socket"); + + if (listen(sfd, 1) < 0) + die("Couldn't listen to the socket"); + + cfd = accept(sfd, (struct sockaddr *) &cli_addr, &sad_sz); + if (cfd < 0) + die("Couldn't accept incoming connection"); + + while ((bytes = read(cfd, buf, sizeof(buf))) != 0) { + if (bytes < 0) + die("Couldn't receive message"); + + if (write(cfd, buf, bytes) < 0) + die("Couldn't send message"); + } + + close(cfd); + close(sfd); + return 0; } -- cgit v1.2.3-54-g00ecf