Improved Server::run to now properly handle multiple packets

This commit is contained in:
iherman-
2026-05-07 14:18:52 +02:00
parent 4beabead01
commit 752eb89e72

View File

@@ -6,7 +6,7 @@
/* By: iherman- <iherman-@student.42malaga.com +#+ +:+ +#+ */ /* By: iherman- <iherman-@student.42malaga.com +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2026/05/06 17:19:12 by iherman- #+# #+# */ /* Created: 2026/05/06 17:19:12 by iherman- #+# #+# */
/* Updated: 2026/05/07 13:49:56 by iherman- ### ########.fr */ /* Updated: 2026/05/07 14:08:48 by iherman- ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -76,19 +76,24 @@ void Server::run()
char buffer[kBufferSize] = {0}; char buffer[kBufferSize] = {0};
struct sockaddr_in client_addr; struct sockaddr_in client_addr;
socklen_t client_addr_size = 0; socklen_t client_addr_size = sizeof(client_addr);
int clientSocket = accept(serverSocket_, (struct sockaddr*)&client_addr, &client_addr_size); int clientSocket = accept(serverSocket_, (struct sockaddr*)&client_addr, &client_addr_size);
std::size_t recv_amount = 0; std::string message;
while (true) while (true)
{ {
recv_amount += recv(clientSocket, buffer, kBufferSize, 0); int recv_amount = recv(clientSocket, buffer, kBufferSize, 0);
if (buffer[recv_amount - 1] == '\n')
if (recv_amount <= 0)
break ;
message.append(buffer, recv_amount);
if (message.find('\n') != std::string::npos)
break ; break ;
} }
std::string to_send(buffer); message = "Server received: " + message;
to_send = "Server received: " + to_send; send(clientSocket, message.c_str(), message.size(), 0);
send(clientSocket, to_send.c_str(), to_send.size(), 0);
close(clientSocket); close(clientSocket);
} }