Improved Server::run to now properly handle multiple packets
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user