From 4ec5ab7a14c53ede7e6accd291bb83192dba0d24 Mon Sep 17 00:00:00 2001 From: jl4589 <jl4589@drexel.edu> Date: Wed, 12 Mar 2025 19:44:35 -0400 Subject: [PATCH] Impmeneted boot server hopefully --- Assignment-06/starter/dshlib.c | 6 ++++++ Assignment-06/starter/rsh_server.c | 34 ++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/Assignment-06/starter/dshlib.c b/Assignment-06/starter/dshlib.c index 192dd90..9fa4c8b 100644 --- a/Assignment-06/starter/dshlib.c +++ b/Assignment-06/starter/dshlib.c @@ -206,6 +206,12 @@ int execute_pipeline(command_list_t *clist) { return OK; } +static void start_server() { + int listen_socket; + int ret; + +} + /**** **** FOR REMOTE SHELL USE YOUR SOLUTION FROM SHELL PART 3 HERE **** THE MAIN FUNCTION CALLS THIS ONE AS ITS ENTRY POINT TO diff --git a/Assignment-06/starter/rsh_server.c b/Assignment-06/starter/rsh_server.c index 7a5fb74..29473d5 100644 --- a/Assignment-06/starter/rsh_server.c +++ b/Assignment-06/starter/rsh_server.c @@ -50,11 +50,6 @@ int start_server(char *ifaces, int port, int is_threaded){ int svr_socket; int rc; - // - //TODO: If you are implementing the extra credit, please add logic - // to keep track of is_threaded to handle this feature - // - svr_socket = boot_server(ifaces, port); if (svr_socket < 0){ int err_code = svr_socket; //server socket will carry error code @@ -117,11 +112,35 @@ int stop_server(int svr_socket){ int boot_server(char *ifaces, int port){ int svr_socket; int ret; - struct sockaddr_in addr; // TODO set up the socket - this is very similar to the demo code + svr_socket = socket(AF_INET, SOCK_STREAM, 0); + if (svr_socket == -1) { + perror("socket"); + return ERR_RDSH_SERVER; + } + + int enable = 1; + if (setsockopt(svr_socket, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0) { + perror("setsockopt"); + close(svr_socket); + return ERR_RDSH_SERVER; + } + + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = inet_addr(ifaces); + addr.sin_port = htons(port); + + ret = bind(svr_socket, (const struct sockaddr *) &addr, sizeof(struct sockaddr_in)); + + if (ret == -1 ) { + perror("bind"); + close(svr_socket); + return ERR_RDSH_SERVER; + } + /* * Prepare for accepting connections. The backlog size is set * to 20. So while one request is being processed other requests @@ -132,7 +151,8 @@ int boot_server(char *ifaces, int port){ perror("listen"); return ERR_RDSH_COMMUNICATION; } - + + printf("SERVER BOOTED on %s:%d\n", ifaces, port); return svr_socket; } -- GitLab