From c15deb8bb76c9800da382225b165895c67dc4367 Mon Sep 17 00:00:00 2001 From: lprengel Date: Sat, 2 Nov 2024 07:01:28 +0100 Subject: [PATCH 1/5] accepting multiple clients --- TelescopeDriver/TelescopeDriver.cpp | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/TelescopeDriver/TelescopeDriver.cpp b/TelescopeDriver/TelescopeDriver.cpp index ee857cc..1712e9e 100644 --- a/TelescopeDriver/TelescopeDriver.cpp +++ b/TelescopeDriver/TelescopeDriver.cpp @@ -511,6 +511,7 @@ void Listener(void) { int new_fd; struct sockaddr_storage their_addr; socklen_t addr_size = sizeof(their_addr); + /* new_fd = accept(socketfd, (struct sockaddr*) &their_addr, &addr_size); if(new_fd == -1) { @@ -562,10 +563,73 @@ void Listener(void) { // clean up close(new_fd); close(socketfd); + */ + while(1) { + new_fd = accept(socketfd, (struct sockaddr*) &their_addr, &addr_size); + + if(new_fd == -1) { + std::cout << "listen error" << std::endl; + } + else { + std::cout << "Connection accepted. Using new socketfd : " << new_fd << std::endl; + } + + std::cout << "Waiting to recieve data..." << std::endl; + + pid = fork(); + if(pid < 0){ + std:cout << "Error on fork" << std::endl; + } + if(pid == 0){ + close(socketfd); + run_commands(new_fd); + exit(0); + }else { + close(new_fd); + } + } +} + + +int run_commands(int fd) { + ssize_t bytes_received; + char incoming_data_buffer[1000]; + bytes_received = recv(fd, incoming_data_buffer, 1000, 0); + + if(bytes_received == 0) { + std::cout << "host shut down." << std::endl; + break; + } + if(bytes_received == -1) { + std::cout << "receive error!" << std::endl; + break; + } + + + incoming_data_buffer[bytes_received] = '\0'; + + std::string input = (std::string) incoming_data_buffer; + std::vector commands = separator(input); + //std::cout << commands.size()-1 < Date: Sat, 2 Nov 2024 07:27:09 +0100 Subject: [PATCH 2/5] accepting multiple clients --- TelescopeDriver/TelescopeDriver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TelescopeDriver/TelescopeDriver.cpp b/TelescopeDriver/TelescopeDriver.cpp index 1712e9e..b35f282 100644 --- a/TelescopeDriver/TelescopeDriver.cpp +++ b/TelescopeDriver/TelescopeDriver.cpp @@ -578,7 +578,7 @@ void Listener(void) { std::cout << "Waiting to recieve data..." << std::endl; - pid = fork(); + int pid = fork(); if(pid < 0){ std:cout << "Error on fork" << std::endl; } From fa17cee540967604df81f6332ef14a2adcc59b47 Mon Sep 17 00:00:00 2001 From: lprengel Date: Sat, 2 Nov 2024 07:30:21 +0100 Subject: [PATCH 3/5] accepting multiple clients --- TelescopeDriver/TelescopeDriver.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/TelescopeDriver/TelescopeDriver.cpp b/TelescopeDriver/TelescopeDriver.cpp index b35f282..fb563c3 100644 --- a/TelescopeDriver/TelescopeDriver.cpp +++ b/TelescopeDriver/TelescopeDriver.cpp @@ -593,18 +593,18 @@ void Listener(void) { } -int run_commands(int fd) { +void run_commands(int fd) { ssize_t bytes_received; char incoming_data_buffer[1000]; bytes_received = recv(fd, incoming_data_buffer, 1000, 0); if(bytes_received == 0) { - std::cout << "host shut down." << std::endl; - break; + std::cout << "host shut down." << std::endl; + return; } if(bytes_received == -1) { - std::cout << "receive error!" << std::endl; - break; + std::cout << "receive error!" << std::endl; + return; } From cc03ac498faceafe9d7c2e67a7accb5b1a37d86e Mon Sep 17 00:00:00 2001 From: lprengel Date: Sat, 2 Nov 2024 07:31:54 +0100 Subject: [PATCH 4/5] accepting multiple clients --- TelescopeDriver/TelescopeDriver.cpp | 73 ++++++++++++++--------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/TelescopeDriver/TelescopeDriver.cpp b/TelescopeDriver/TelescopeDriver.cpp index fb563c3..5701094 100644 --- a/TelescopeDriver/TelescopeDriver.cpp +++ b/TelescopeDriver/TelescopeDriver.cpp @@ -458,6 +458,42 @@ const char *parser(std::string input) { return "Invalid Command"; } +void run_commands(int fd) { + ssize_t bytes_received; + char incoming_data_buffer[1000]; + bytes_received = recv(fd, incoming_data_buffer, 1000, 0); + + if(bytes_received == 0) { + std::cout << "host shut down." << std::endl; + return; + } + if(bytes_received == -1) { + std::cout << "receive error!" << std::endl; + return; + } + + + incoming_data_buffer[bytes_received] = '\0'; + + std::string input = (std::string) incoming_data_buffer; + std::vector commands = separator(input); + //std::cout << commands.size()-1 < commands = separator(input); - //std::cout << commands.size()-1 < Date: Sat, 2 Nov 2024 07:38:16 +0100 Subject: [PATCH 5/5] accepting multiple clients --- TelescopeDriver/TelescopeDriver.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TelescopeDriver/TelescopeDriver.cpp b/TelescopeDriver/TelescopeDriver.cpp index 5701094..87f2658 100644 --- a/TelescopeDriver/TelescopeDriver.cpp +++ b/TelescopeDriver/TelescopeDriver.cpp @@ -459,6 +459,7 @@ const char *parser(std::string input) { } void run_commands(int fd) { + while(1) { ssize_t bytes_received; char incoming_data_buffer[1000]; bytes_received = recv(fd, incoming_data_buffer, 1000, 0); @@ -492,6 +493,7 @@ void run_commands(int fd) { } } } + } } void Listener(void) {