diff --git a/Makefile b/Makefile index 7a23815..82e06d1 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,11 @@ -all: webserver.o - gcc -o webserver.out webserver.o +all: webserver.o client_handler.o + gcc -o webserver.out webserver.o client_handler.o -lpthread webserver: webserver.c gcc -c webserver webserver.c +client_handler: client_handler.c + gcc -c client_handler client_handler.c + clean: rm -f *.o *.out \ No newline at end of file diff --git a/client_handler.c b/client_handler.c new file mode 100644 index 0000000..b519667 --- /dev/null +++ b/client_handler.c @@ -0,0 +1,16 @@ +#include "client_handler.h" + +#define BUFFER_SIZE 1024 + +void* client_handler(void* args) { + int client = *((int*)args); + char* buffer = (char*)malloc(BUFFER_SIZE); + + ssize_t bytes_read = recv(client, buffer, BUFFER_SIZE, 0); + if (bytes_read > 0) { + buffer[bytes_read] = '\0'; + printf("Received: %s\n", buffer); + } + free(buffer); + return NULL; +} \ No newline at end of file diff --git a/client_handler.h b/client_handler.h new file mode 100644 index 0000000..cee9d6f --- /dev/null +++ b/client_handler.h @@ -0,0 +1,11 @@ +#ifndef CLIENT_HANDLER_H +#define CLIENT_HANDLER_H + +#include +#include +#include +#include + +void* client_handler(void* args); + +#endif \ No newline at end of file diff --git a/webserver.c b/webserver.c index f9b2a8c..358d4e9 100644 --- a/webserver.c +++ b/webserver.c @@ -1,9 +1,11 @@ #include +#include #include #include #include #include -// #include + +#include "client_handler.h" struct sockaddr_in server_addr; @@ -43,8 +45,10 @@ int main(int argc, char **argv) { if (client < 0) { perror("Failed to accept client"); continue; - } else { - printf("Client connected\n"); } + + pthread_t thread; + pthread_create(&thread, NULL, client_handler, (void *)client); + pthread_detach(thread); } } \ No newline at end of file