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