diff --git a/prak3/src/server.cpp b/prak3/src/server.cpp index fe652c5d237a043b833329c8c488d0bc6ca9c95e..ac239f5677479d7b3d87a68c1bd0570960a35ef4 100644 --- a/prak3/src/server.cpp +++ b/prak3/src/server.cpp @@ -226,15 +226,25 @@ std::string processRequest_shared_mtx(const std::string& request) { } void handle_client(int client_socket) { + char buffer[BUFFER_SIZE] = {0}; + while (true) { - ssize_t bytes_received = read(client_socket, buffer, BUFFER_SIZE - 1); - if (bytes_received <= 0) { - std::cout << "Client disconnected." << std::endl; - break; + + ssize_t bytes_received = 0; + ssize_t total_bytes_received = 0; + while (true) { + bytes_received = read(client_socket, buffer + total_bytes_received, 1); + if (bytes_received <= 0) { + std::cout << "Client disconnected." << std::endl; + return; + } + total_bytes_received += bytes_received; + if (buffer[total_bytes_received - 1] == ';') { + break; + } } - buffer[bytes_received] = '\0'; std::string response = processRequest_shared_mtx(buffer); // Anfragezähler inkrementieren