#include "socket_handler.h" #include "routes.h" const int BUFFER_SIZE = 4096; #ifdef _WIN32 int SocketHandler::working_with_client_windows(SOCKET listen_socket) { while (1) { // 6. Принятие входящего соединения sockaddr_in client_addr; int client_addr_size = sizeof(client_addr); SOCKET client_socket = accept(listen_socket, (struct sockaddr*)&client_addr, &client_addr_size); if (client_socket == INVALID_SOCKET) { std::cerr << "Accept failed with error: " << WSAGetLastError() << "\n"; continue; } std::cout << "Client connected!\n"; // 7. получение данных от юзера char buffer[BUFFER_SIZE] = {0}; int bytes_received = recv(client_socket, buffer, BUFFER_SIZE, 0); if (bytes_received > 0) { std::string request(buffer, bytes_received); std::cout << "Received request:\n" << request << "\n"; // Обработка запроса std::string response = RouteHandler::get_response_by_request(request); std::cout << "Response:\n" << response << "\n\n"; // Отправка ответа send(client_socket, response.c_str(), response.size(), 0); } closesocket(client_socket); } return 0; } #else int SocketHandler::working_with_client_unix(int listen_socket) { while (1) { // Принятие соединения sockaddr_in client_addr; socklen_t client_addr_size = sizeof(client_addr); int client_socket = accept(listen_socket, (struct sockaddr*)&client_addr, &client_addr_size); if (client_socket == -1) { perror("Accept failed"); continue; } std::cout << "Client connected.\n"; // Чтение данных char buffer[BUFFER_SIZE] = {0}; ssize_t bytes_received = read(client_socket, buffer, BUFFER_SIZE); if (bytes_received > 0) { std::string request(buffer, bytes_received); std::cout << "Received request:\n" << request << "\n"; std::string response = RouteHandler::get_response_by_request(request); std::cout << "Response:\n" << response << "\n\n"; // Отправка ответа send(client_socket, response.c_str(), response.size(), 0); } close(client_socket); } } #endif